Felező kereső játék

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 a low változók vannak, akkor nem szabad keményen kódolniuk értékeiket a print.
  • Használja a // parancsot, hogy megbizonyosodjon róla, hogy egész szám osztást kap.
  • Írhat guess = (low + high) // 2 csak egyszer, ha az első sorként a while ciklusba helyezi.
  • A , először konvertálhatja kisbetűvé, hogy megbizonyosodjon a h és a H megértéséről.
  • Tegye a kódot a PEP8 szabványnak megfelelővé, például a maximális lin e hossza.
  • A format metódus használatával str egyé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.

  1. Megszabadulni a guessing zászlótól, és csak egy végtelen hurokot kell megszakítani nyilatkozat.

  2. iv pointer egy 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük