这是我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
基本上我正在编写一个计算测试分数的程序,但首先用户必须输入0到100之间的分数.
如果用户输入超出该范围的测试分数,我希望程序告诉用户重写该数字.我不希望程序以错误结束.我怎样才能做到这一点?
while True:
n = int(input("enter a number between 0 and 100: "))
if 0 <= n <= 100:
break
print('try again')
Run Code Online (Sandbox Code Playgroud)
就像你问题中的代码一样,这在Python 2.x和3.x中都有效.
首先,您必须知道如何检查一个值是否在一个范围内。这很容易:
if n in range(0, 101):
Run Code Online (Sandbox Code Playgroud)
几乎是英文的直译。(这只是 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)
Run Code Online (Sandbox Code Playgroud)
同样,几乎是英语的直接翻译。
但如果你把它分解成一个单独的函数,它可能会更清楚:
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)
Run Code Online (Sandbox Code Playgroud)
正如 fp 指出的那样,如果他们输入的不是整数(例如“A+”),程序仍然会“以错误结束”。处理起来有点棘手。如果您给函数提供的字符串不是整数的有效表示形式,则该int函数将引发 a 。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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42693 次 |
| 最近记录: |