如何在Python中运行整个程序后重复程序?

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

我写了一个简短的程序,比较两个整数并在最后提供一个合适的答案。我希望程序重复自己,以防整数没有写在'userint'中。

核心计划:

from random import randint
rn = randint(0,5)
print("The randomly generated integer is:",rn)
userint= input("Enter an integer:")

try:
    if userint == rn:
        print("Numbers are equal!")
    elif userint > rn:
        print(userint)
    else:
        print(rn)
except:
    print("You have not entered an integer!")

if input("Do you want to repeat(y/n)").lower()== "  N":
    break

这是我尝试过的:

while True:
    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")

    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    if input("Do you want to repeat(y/n)").lower()== "  N":
        break

我还尝试了另一种重复程序的方法:

def main():

    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")

    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    restart = input("Do you want to start again?").lower()
    if restart == "yes":
        main()
    else:
        exit()
main()

在这两种情况下,程序都会要求用户输入值。然而,尽管它运行了程序的重启部分,但没有传导实际比较值。

有人可以指导我如何修复程序并允许它比较值,如果用户输入不是整数打印(“你还没有输入整数!”),请问“你想重新开始吗?”,然后运行程序又来了?

python while-loop main repeat
2个回答
0
投票

您可以使用isnumeric来检查输入是否为整数。

def main():

    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")
    if userint.isnumeric():
        userint=int(userint)
    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    restart = input("Do you want to start again?").lower()
    if restart == "yes":
        main()
    else:
        exit()
main()

0
投票

问题出在你的try / except块中。如果任何这些行失败,try块将不会运行该块中包含的任何代码行。在您的情况下,由于您的userint变量是字符串而rn是int,因此您有一个失败的行。在您的示例的上下文中,可以修复此问题,只需将以下行添加到try块的顶部:

try:
    userint = int( userint )
    ...
except:
    ...

如果无法将userint转换为字符串,则try块将失败,您将打印错误消息。

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