如何在 运行 整个程序 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 块将失败,您将改为打印错误消息。
我写了一个比较两个整数并在最后提供适当答案的简短程序。我希望程序在 '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 块将失败,您将改为打印错误消息。