def stringtonumber(guess): # Converts input by user from a string to an integer answer = 0 for i in guess[1]: if i =="R": answer += 10 elif i == 'F': answer += 1 guess[1] = answer # replaces the string with said integer in index 1 of guess return (guess) #------------------------------------------------------ def compare (guess1,guess2): # compares each element in a string within a guess to each element in a string within another guess and returns an answercode F=0 R=0 for i in range(0,4): for j in range(0,4): if guess2[0][i]==guess1[0][j]: if i==j: R=R+10 else: F=F+1 return (F+R) #-------------------------------------------------------- def printResult (numberOfGuesses): if numberOfGuesses == 1: print ( 'One guess was all it took, I win!') elif numberOfGuesses == 2: print ( 'Two guesses was all it took, I am good at this!') elif numberOfGuesses == 3: print ( 'Three guesses was all it took, I am pretty good at this!') else: print ( numberOfGuesses + ' guesses was all it took, I can do better!') return ":)" #-------------------------------------------------------- # Creates a list of every possible guess from 1023 to 10k and removes all numbers where one element occurs more than once number_list = [] for i in range(1023,10000): number_list.append(str(i)) # Creates a temporary list that contains the index of every number that's supposed to be removed from number_list temp_list=[] for i in range(0,len(number_list)): for ii in range(0,4): forekomst=0 for iii in range(0,4): if number_list[i][ii] == number_list[i][iii]: forekomst=forekomst+1 if forekomst > 1: temp_list.append(i) break # reverses the list of indices and removes the numbers in a backwards order (to avoid any problems with changing of index) temp_list.reverse() for i in range(0,len(temp_list)): tabort=temp_list[i] number_list.pop(tabort) #---------------------------------------------------------------------------------------------- #sparar alla gamla gissningar i en lista oldguesses = [] stopPlaying = False guess1 = [number_list[0], input('I will guess ' + number_list[0] + ' and your answer is: ')] #första gissningen är alltid densamma (alltså första värdet i number_list som är 1023) stringtonumber(guess1) oldguesses.append(guess1) #ska loopa igenom nummerlistan och leta efter rimliga gissningar if guess1[1] == 40: print ('One guess was all it took, I win!') else: while not stopPlaying: for i in range(0,len(number_list)): for j in range(0,len(oldguesses)): if number_list[i] > oldguesses[j][0] and not stopPlaying: newguess = [number_list[i]] if compare(oldguesses[j], newguess)== oldguesses[j][1]: newguess.append(input('I will guess ' + number_list[i] + ' and your answer is: ')) stringtonumber(newguess) oldguesses.append(newguess) print(newguess) if newguess[1]== 40: printResult(len(oldguesses)) stopPlaying = True break else: break else: break
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question