이분법 검색 게임

저는 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)) 

답변

코드를 개선 할 수있는 몇 가지 사항은 다음과 같습니다.

  • highlow에 대한 변수가 있으므로 여는 print
  • //를 사용하여 정수 나눗셈을해야합니다.
  • while 루프의 첫 번째 줄로 배치하는 경우 한 번만 가능합니다.
  • , 먼저 소문자로 변환하여 hH를 모두 이해할 수 있습니다.
  • 최대 lin과 같은 항목에서 코드가 PEP8 을 준수하도록합니다. e 길이.
  • strformat 방법을 사용하면 인쇄중인 내용을 더 명확하게 확인할 수 있습니다.

통합 :

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의 요점에 추가로.

  1. guessing 플래그를 제거하고 중단이있는 무한 루프를 갖습니다. 성명서.

  2. 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와 비교하는 방법을 반복적으로 묻습니다. 다음을 얻은 후에 범위를 더 제한 할 수 있습니다. 사용자의 답변

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다