簡體   English   中英

無法弄清楚程序停止運行的原因(在while循環中嘗試/異常)

[英]can't figure out why the program stops running (try/exception in a while loop)

出於某種原因,如果您添加一個我看不到或不了解程序中出現什么問題的字符串,代碼會停止

import random
import math

def start_game():
    pass

    guesses = 1 

    random_number = (random.randint(1,10)) #limiting the number only from one to ten 



    try:
        number = int(input("Welcome new player! Pick a number between 1 to 10:   "))
    except ValueError:
        print("Please only use numbers between 1-10")
    else:
        
     
        while number != random_number :

            try:

                if random_number > number:
                    print("A little too low")
                    number = int(input("Pick a number between 1 to 10:   "))
                    guesses = guesses+ 1
                            
                            
                elif random_number < number:
                    print("A little too high")
                    number = int(input("Pick a number between 1 to 10:   "))
                    guesses = guesses+ 1
                        
            except ValueError:
                print("Sorry please only use numbers between 1 - 10")
            else:
                pass
                number == random_number
                guesses = guesses+ 1 
                
                            
        print("Good job! you guessed the right number")
        print ("The amount of guesses were {}".format(guesses))


start_game()

您在這里遇到的第一個問題是您甚至沒有使用可以刪除的數學模塊。

第二個問題是您的第二個 except 子句正在結束程序。 它打印出這條消息print("Sorry please only use numbers between 1 - 10")並且沒有輸入可以繼續游戲。

第三個問題是,即使您沒有輸入任何字符串並正確玩游戲,每次迭代結束時的 else 語句也會猜測在您已經在 if 和 elif 子句中添加的 1 之上添加另一個 1 .

第四個問題乍一看不是問題,但了解代碼在做什么對您來說很重要。 這里的代碼無緣無故看起來非常復雜。 我在下面的代碼中應用了相同的游戲。 您可以簡化所有內容,例如我為您建議的以下代碼。

import random

def validate_input_between(sentence: str, n: int) -> int:
    while True:
        try:
            number = int(input(f"{sentence} {n}: "))
            if 1 <= number <= n:
                return number
            raise ValueError()
        except ValueError:
            print(f"Input must be an integer between 1 and {n}.")


def start_game(n: int) -> None:
    guesses = 1
    random_number = random.randint(1, n)
    num = validate_input_between("Enter a number between 1 and", n)
    while True:
        if random_number > num:
           print("Your guess was too low.")
           num = validate_input_between("Guess another number between 1 and", n)
           guesses += 1
        elif random_number < num:
            print("Your guess was too high.")
            num = validate_input_between("Guess another number between 1 and", n)
            guesses += 1
        else:
            print("Good job! you guessed the right number!")
            print(f"The amount of guesses were {guesses}.")
            break

start_game(5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM