我正在尝试设置以下代码,要求用户输入两个整数(num_sides& num_rolls)。如果用户没有为任一输入输入整数,则代码应打印语句“输入整数”。
我发现此代码仅测试num_sides但不测试num_rolls是否为整数。这是怎么回事?
提前感谢您的帮助!
def rolldice():
while True:
while True:
num_sides = input("Enter number of sides for die: ")
num_rolls = input("Enter number of rolls for die: ")
try:
if int(num_sides) != num_sides or int(num_rolls) != num_rolls:
break
break
except(ValueError):
print("Enter an integer")
True
答案 0 :(得分:2)
为什么你有一个嵌套循环? (两个while True
一个在另一个内)
以下代码更简单,应该可以使用:
def rolldice():
while True:
num_sides = input("Enter number of sides for die: ")
num_rolls = input("Enter number of rolls for die: ")
try:
int(num_sides)
int(num_rolls)
break
except ValueError:
print("Enter an integer")
如果int
评估并且没有崩溃,则执行break
并且您可以离开循环。
由于它是一个函数,您可能希望在函数末尾返回(num_sides, num_rolls)
,这样它们就不会丢失。 (您也可以将break
替换为return
,这将同时有效地停止此功能)
除非这只是代码的开头,否则不要介意我刚才所说的内容。 :)
答案 1 :(得分:0)
您可以展开int
并检查ValueError
:
def rolldice():
while True:
try:
num_sides = int(input("Enter number of sides for die: "))
num_rolls = int(input("Enter number of rolls for die: "))
break
except ValueError:
print("Enter an integer")
>>> rolldice()
Enter number of sides for die: 5
Enter number of rolls for die: foo
Enter an integer
Enter number of sides for die: foo
Enter an integer
Enter number of sides for die: bar
Enter an integer
Enter number of sides for die: 1
Enter number of rolls for die: 2
>>>