我写了一个简短的程序,比较两个整数并在最后提供一个合适的答案。我希望程序重复自己,以防整数没有写在'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()
在这两种情况下,程序都会要求用户输入值。然而,尽管它运行了程序的重启部分,但没有传导实际比较值。
有人可以指导我如何修复程序并允许它比较值,如果用户输入不是整数打印(“你还没有输入整数!”),请问“你想重新开始吗?”,然后运行程序又来了?
您可以使用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是int,因此您有一个失败的行。在您的示例的上下文中,可以修复此问题,只需将以下行添加到try块的顶部:
try:
userint = int( userint )
...
except:
...
如果无法将userint转换为字符串,则try块将失败,您将打印错误消息。