2017-02-18 5 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に初期化する必要があります。
  • elif guess >= number:ニーズanswerの最初の文字が小文字に変換した場合elif guess > number:
  • に変更するあなたがゲームを再起動するために、再度main()を呼び出すことができy等しいです。

私は以下のコードで上記の問題を修正:

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

おかげで、それを試してみてください!魅力のような言葉! –

関連する問題