我在 CS50 练习“猜谜游戏”中遇到 With 循环问题

问题描述 投票:0回答:2

这是我第一个没有帮助的程序,所以我知道它可能不是最好的。

说明如下:

在名为 game.py 的文件中,实现一个程序:

提示用户输入级别, 。如果用户没有输入正整数,程序应该再次提示。 随机生成 1 到 1 之间的整数 ,包含在内,使用 random 模块。 提示用户猜测该整数。如果猜测值不是正整数,程序应再次提示用户。 如果猜测值小于该整数,则程序应输出 Toosmall!并再次提示用户。 如果猜测值大于该整数,程序应输出 Too large!并再次提示用户。 如果猜测与该整数相同,程序应该输出 Just right!然后退出。

现在,我的问题是,当用户猜测一个高于 int_rand 或低于 int_rand 的数字时,一切都会出错。程序开始输出“太小!”或“太大了!”无限地。我该怎么办?预先感谢。

import random


def main():
    # Get positive integer from the user
    number = positive_integer()
    # Generate random int between 1 and number
    int_rand = randomizer(number)
    # Prompt the user to guess the integer
    guess = guesser()
    # Output
    output(guess, int_rand)


def positive_integer():
    while True:
        try:
            n = int(input("Level: "))
            if n > 0:
                return n

        except ValueError:
            pass


def randomizer(number):
    rand_int = random.randint(1, number)
    return rand_int


def guesser():
    while True:
        try:
            x = int(input("Guess: "))
            if x >= 1:
                return x
        except ValueError:
            pass


def output(guess, int_rand):
    while True:
        try:
            if guess < int_rand:
                print("Too small!")

            elif guess > int_rand:
                print("Too large!")


            elif guess == int_rand:
                print("Just right!")
                break

        except ValueError:
            pass


main()

python cs50
2个回答
0
投票

循环应该在主函数中,以便用户在错误时输入新的猜测。我更改了输出函数,使其返回用户是否获胜的值,以便您知道何时结束循环。另外,没有必要排除输出中的值错误,因为您已经知道您正在获得一个 int。

def main():
    number = positive_integer()
    int_rand = randomizer(number)
    while True:
        guess = guesser()
        has_won = output(guess, int_rand)
        
        if has_won:
            break

def output(guess, int_rand):
    if guess < int_rand:
        print("Too small!")
        return False

    elif guess > int_rand:
        print("Too large!")
        return False

    elif guess == int_rand:
        print("Just right!")
        return True

0
投票

如果猜测值小于该整数,则程序应输出 Toosmall!并再次提示用户。 如果猜测值大于该整数,程序应输出 Too large!并再次提示用户。 如果猜测与该整数相同,程序应该输出 Just right!然后退出。

输出示例1

等级:猫 1级 等级:10 猜测:5 太小! 猜测:8 太小! 猜测:9 正好! 示例输出 2

等级:1000 猜测:100 太小! 猜测:500 太大了! 猜测:300 太小! 猜测:400 太大了! 猜测:350 太大了! 猜测:320 太小! 猜测:330 太小! 猜测:335 太大了! 猜测:333 太大了! 猜测:332 太大了! 猜测:331 刚刚好

© www.soinside.com 2019 - 2024. All rights reserved.