这是我的代码:
total = int(input("How many students are there "))
print("Please enter their scores, between 1 - 100")
myList = []
for i in range (total):
n = int(input("Enter a test score >> "))
myList.append(n)
基本上我正在编写一个计算测试分数的程序,但首先用户必须输入0到100之间的分数。
如果用户输入的测试分数超出该范围,我希望程序告诉用户重写该编号。我不希望程序以错误结束。我怎么能这样做?
答案 0 :(得分:5)
while True:
n = int(input("enter a number between 0 and 100: "))
if 0 <= n <= 100:
break
print('try again')
就像你问题中的代码一样,这在Python 2.x和3.x中都有效。
答案 1 :(得分:2)
首先,您必须知道如何检查值是否在范围内。这很简单:
if n in range(0, 101):
几乎是英文的直接翻译。 (这对于Python 3.0或更高版本来说只是一个很好的解决方案,但你明显使用的是Python 3。)
接下来,如果你想让他们继续尝试,直到他们输入有效的东西,只需在循环中进行:
for i in range(total):
while True:
n = int(input("Enter a test score >> "))
if n in range(0, 101):
break
myList.append(n)
再次,几乎是英语的直接翻译。
但如果你把它分解成一个单独的函数可能会更清楚:
def getTestScore():
while True:
n = int(input("Enter a test score >> "))
if n in range(0, 101):
return n
for i in range(total):
n = getTestScore()
myList.append(n)
正如f p指出的那样,如果程序输入的内容不是整数,例如“A +”,程序仍将“以错误结束”。处理有点棘手。如果给它一个不是整数有效表示的字符串,int
函数将引发ValueError
。所以:
def getTestScore():
while True:
try:
n = int(input("Enter a test score >> "))
except ValueError:
pass
else:
if n in range(0, 101):
return n
答案 2 :(得分:0)
您可以使用辅助功能,如:
def input_number(min, max):
while True:
n = input("Please enter a number between {} and {}:".format(min, max))
n = int(n)
if (min <= n <= max):
return n
else:
print("Bzzt! Wrong.")