Încep să învăț Python și încerc să optimizez acest joc de căutare bisectivă.
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)) 
Răspuns
Unele lucruri cred că ar îmbunătăți codul dvs., ceea ce este destul de corect:
-  Având variabile pentru 
highșilow, nu ar trebui să le codificați valorile în deschidereaprint. -  Ar trebui să utilizați 
//pentru a vă asigura că primiți divizii întregi. -  Puteți scrie 
guess = (low + high) // 2o singură dată, dacă îl plasați ca prima linie în buclawhile. -  Când verificați 
pointer, poate doriți mai întâi să îl convertiți cu litere mici, pentru a vă asigura că atâthcât șiHsunt înțelese. - Configurați codul conform cu PEP8 pentru lucruri precum linia maximă Lungimea e.
 -  Folosind metoda 
formatastrputeți clarifica ce tipăriți. 
Reunind totul:
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)) 
Răspuns
În plus față de punctele lui Jaime.
- 
Scăpați de steagul
guessingși pur și simplu aveți o buclă infinită cu o pauză afirmație. - 
pointereste un nume cu adevărat mai bogat pentru acea variabilă, mai ales că înseamnă altceva în alte limbaje de programare. 
Răspuns
Completarea răspunsului dat de Jamie, cu o remarcă:
 Când tastați "c", chiar dacă numărul nu este cel la care vă gândiți, tipăriți întotdeauna această parte a codului print("Game over. Your secret number was {0}." 
 Deci, pentru a evita acest lucru, trebuie să testați și (str(numbers) == str(guess)) pe ramura (response == "c"): 
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 
Comentarii
- Scopul acestui joc de ghicit este că utilizatorul nu introduce niciodată numărul real, deoarece acesta este un secret .
 
Răspuns
Pe lângă celelalte răspunsuri: când aleg numărul 100 ca secret al meu , codul va rula într-o buclă nesfârșită, întrebându-mă în mod repetat cum se compară cu 99. Puteți restrânge mai mult intervalul după ce obțineți un răspuns de la utilizator.