Kezdem megtanulni a Pythont, és megpróbálom optimalizálni ezt a felező keresési játékot.
high = 100 low = 0 guess = (high + low)/2 print("Please think of a number between 0 and 100!") guessing = True while guessing: print("Is your secret number " + str(guess) + "?") pointer = raw_input("Enter "h" to indicate the guess is too high. Enter "l" to indicate the guess is too low. Enter "c" to indicate I guessed correctly.") if pointer == "h": high = guess guess = (low + guess)/2 elif pointer == "l": low = guess guess = (high + guess)/2 elif pointer == "c": guessing = False else: print("Sorry, I did not understand your input.") print("Game over. Your secret number was: " + str(guess)) 
Válasz
Néhány dolog szerintem javítaná a kódodat, ami nagyon helyes:
-  Ha a 
highés alowváltozók vannak, akkor nem szabad keményen kódolniuk értékeiket aprint. -  Használja a 
//parancsot, hogy megbizonyosodjon róla, hogy egész szám osztást kap. -  Írhat 
guess = (low + high) // 2csak egyszer, ha az első sorként awhileciklusba helyezi. -  A , először konvertálhatja kisbetűvé, hogy megbizonyosodjon a 
hés aHmegértéséről. - Tegye a kódot a PEP8 szabványnak megfelelővé, például a maximális lin e hossza.
 -  A 
formatmetódus használatávalstregyértelműbbé teheti a nyomtatottakat. 
Az összes összerakása:
high, low = 100, 0 print("Please think of a number between {0} and {1}!".format(low, high)) guessing = True while guessing: guess = (low + high) // 2 print("Is your secret number {0}?".format(guess)) pointer = raw_input("Enter "h" to indicate the guess is too high. " "Enter "l" to indicate the guess is too low. " "Enter "c" to indicate I guessed correctly.").lower() if pointer == "h" : high = guess elif pointer == "l" : low = guess elif pointer == "c": guessing = False else: print("Sorry, I did not understand your input.") print("Game over. Your secret number was {0}.".format(guess)) 
Válasz
Jaime pontjai mellett.
- 
Megszabadulni a
guessingzászlótól, és csak egy végtelen hurokot kell megszakítani nyilatkozat. - 
iv
pointeregy nagyon furcsa név ennek a változónak, főleg, hogy mást jelent más programozási nyelvekben. 
Válasz
A Jamie által adott válasz kiegészítése egy megjegyzéssel:
 Amikor írja be a "c" típust, még akkor is, ha a szám nem az, amire gondol, mindig a print("Game over. Your secret number was {0}." 
 Ennek elkerülése érdekében a (str(numbers) == str(guess)) -t is tesztelnie kell a (response == "c") ágon: 
high, low = 100, 0 guess = (low + high) // 2 numbers = raw_input("Please think of a number between {0} and {1}!".format(low, high)) guessing = True while guessing: print("Is your secret number {0}?".format(guess)) response = raw_input("Enter "h" to indicate the guess is too high. " "Enter "l" to indicate the guess is too low. " "Enter "c" to indicate I guessed correctly.").lower() if response == "h" : high = guess elif response == "l" : low = guess elif (response == "c") and (str(numbers) == str(guess)) : print("Game over. Your secret number was {0}.".format(guess)) break else: print("Sorry, I did not understand your input.") guess = (low + high) // 2 
Megjegyzések
- A találgatás lényege, hogy a felhasználó soha nem írja be a tényleges számot, mivel ez titkos .
 
Válasz
A többi válasz mellett: amikor a 100-as számot választom titoknak , a kód végtelen ciklusba fog futni, többször megkérdezve, hogy hasonlít a 99-hez. a felhasználó válasza.