【问题标题】:How to repeat program after running the whole program in Python?在Python中运行整个程序后如何重复程序?
【发布时间】:2019-09-20 02:39:07
【问题描述】:

我编写了一个简短的程序,比较两个整数并在最后提供适当的答案。我希望程序重复自己,以防整数不是写在“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()

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

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

【问题讨论】:

  • 您将输入小写并将其与大写字符串进行比较。
  • 您的代码中从未有过 int 比较。您正在将字符串与 int 进行比较;这肯定会导致 except 块运行。

标签: python while-loop main repeat


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 2018-06-11
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多