2017-02-18 1 views
1

좋아요, 수업을위한 프로젝트를 진행하고 있는데,이 논리 오류가 붙어 있습니다. 필자는 코드에서 오류를 수정 한 후에 원래 오류의 나머지 부분을 지적했다 ... 그리고 나는 논리 오류가 어디 있는지 알고있다. 나는 그것을 고치는 방법을 확신 할 수 없다. 도움을받을 수 있을까요?python 3 논리 오류로 인해 모두 엉망이되었습니다.

미리 감사드립니다.

import random 

def display_title(): 
    print("Guess the number!") 
    print() 

def set_limit(): 
    print("Enter the upper limit for the range of numbers: ") 
    limit = int(input()) 
    return limit 

def count(): ## had to add count being defined as below it was unrecognized by python. 
    count +=1 

def play_game(limit): 
    global count 
    number = random.randint(1, limit) 
    print("I'm thinking of a number from 1 to " + str(limit) + "\n") 
    while True: 
     guess = int(input("Your guess: ")) 
     if guess < number: 
      print("Too low. ") 
      count ## See def count 
     elif guess >= number: 
      print("Too high. ") 
      count ## See def count 
     elif guess == number: ## Pretty sure my logic error is here <---- 
      print("You guessed it in " + str(count) + " tries.\n") 
      return 

def main(): ## syntax error, no : was here 
    display_title() 
    again = "y" 
    while again.lower() == "y": 
     limit = set_limit() 
     play_game(limit) ## limit wasn't set inside, causing a missing positional argument 
     again = input("Play again? (y/n): ") 
     print() 
    print("Bye!") 

if __name__ == "__main__": 
    main() 

답변

0
  • 빈 줄을 인쇄 할 때는 print()을 사용할 필요가 없습니다.
  • input을 사용하여 사용자에게 별도의 print 성명을 요구하지 않아도됩니다.
  • count은 내에서 정의 할 수 있으며 사용자가 첫 번째 시도에서 추측하더라도 1 추측을 갖고 있기 때문에 0이 아닌 1으로 초기화해야합니다. 당신은 게임을 다시 시작 다시 main()를 호출 할 수 있습니다 y 소문자로 변환 answer의 첫 번째 문자가 동일한 경우
  • elif guess >= number: 요구 elif guess > number:
  • 로 변경합니다.

나는 아래의 코드에서 위의 문제 해결 :

import random 

def display_title(): 
    print("Guess the number!\n") 

def set_limit(): 
    limit = int(input("Enter the upper limit for the range of numbers: ")) 
    return limit 

def play_game(limit): 
    count = 1 
    number = random.randint(1, limit) 
    print("I'm thinking of a number from 1 to " + str(limit) + "\n") 
    while True: 
    guess = int(input("Your guess: ")) 
    if guess < number: 
     print("Too low. ") 
     count += 1 
    elif guess > number: 
     print("Too high. ") 
     count += 1 
    elif guess == number: 
     print("You guessed it in " + str(count) + " tries.\n") 
     break 

def main(): 
    display_title() 
    limit = set_limit() 
    play_game(limit) 
    again = input("Play again? (y/n): ") 
    if again[0].lower() == 'y': 
    main() 
    else: 
    print("Bye!") 

if __name__ == "__main__": 
    main() 

이 그것을 here!

+0

도움과 설명에 너무 감사드립니다 !!! –

1

아이디어가 있습니다. 위의> = 기호를 위의 3 행을> 숫자로 변경하십시오. 왜냐하면 추측이 맞을지라도 매번 "추측 = 숫자"라면 멈출 것이기 때문에 그렇지 않다면 "추측 == 숫자"에 도달하지 않을 것이기 때문입니다.

> =은>보다 크거나 같기 때문입니다. 정말 도움이되기를 바랍니다.

+0

감사합니다 시도를! 매력처럼 말한! –