저는 Python을 배우기 시작했으며 이분법 검색 게임을 최적화하려고합니다.
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))
답변
코드를 개선 할 수있는 몇 가지 사항은 다음과 같습니다.
-
high
및low
에 대한 변수가 있으므로 여는print
-
//
를 사용하여 정수 나눗셈을해야합니다. - 는
while
루프의 첫 번째 줄로 배치하는 경우 한 번만 가능합니다. - , 먼저 소문자로 변환하여
h
및H
를 모두 이해할 수 있습니다. - 최대 lin과 같은 항목에서 코드가 PEP8 을 준수하도록합니다. e 길이.
-
str
의format
방법을 사용하면 인쇄중인 내용을 더 명확하게 확인할 수 있습니다.
통합 :
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))
답변
Jaime의 요점에 추가로.
-
guessing
플래그를 제거하고 중단이있는 무한 루프를 갖습니다. 성명서. -
pointer
는 특히 다른 프로그래밍 언어에서 다른 것을 의미하기 때문에 해당 변수에 대한 정말 이상한 이름입니다.
답변
Jamie가 답장을 작성하고 다음과 같이 설명합니다.
유형 "c"
, 숫자가 생각하는 숫자가 아니더라도 항상 코드의이 부분을 인쇄합니다. print("Game over. Your secret number was {0}."
따라서이를 방지하려면 (response == "c")
브랜치에서도 (str(numbers) == str(guess))
를 테스트해야합니다.
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
댓글
- 이 추측 게임의 요점은 비밀 이기 때문에 사용자가 실제 숫자를 입력하지 않는다는 것입니다. i>.
답변
다른 답변 외에 : 내 비밀로 숫자 100을 선택할 때 , 코드는 끝없는 루프로 실행되어 99와 비교하는 방법을 반복적으로 묻습니다. 다음을 얻은 후에 범위를 더 제한 할 수 있습니다. 사용자의 답변