繁体   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