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

How to repeat program after running the whole program in Python?

我写了一个比较两个整数并在最后提供适当答案的简短程序。我希望程序在 '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()

在这两种情况下,程序都会要求用户输入值。相比之下,尽管它 运行 是程序的重新启动部分,但没有对值进行实际比较。

有人可以指导我如何修复程序并允许它比较值,如果用户输入不是整数打印("You have not entered an integer!"),请询问 "Do you want to start again?" 和 运行又是节目?

您可以使用 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()

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

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

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