Check if numbers are in a certain range in python (with a loop)?
本问题已经有最佳答案,请猛点这里访问。
以下是我的代码:
1 2 3 4 5 6 7 8 | 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之间的分数。
如果用户输入的测试分数超出该范围,我希望程序告诉用户重写该数字。我不希望程序以错误结束。我该怎么做?
1 2 3 4 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 | if n in range(0, 101): |
几乎是直接从英语翻译过来的。(对于Python3.0或更高版本,这只是一个很好的解决方案,但显然您使用的是Python3。)
接下来,如果您想让他们一直尝试直到输入有效的内容,只需在循环中进行:
1 2 3 4 5 6 | for i in range(total): while True: n = int(input("Enter a test score >>")) if n in range(0, 101): break myList.append(n) |
同样,几乎是直接从英语翻译过来的。
但如果你把它分解成一个单独的函数,它可能会更清楚:
1 2 3 4 5 6 7 8 9 | 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+",那么它仍然"只会以错误结束"。处理起来有点棘手。如果给
1 2 3 4 5 6 7 8 9 | def getTestScore(): while True: try: n = int(input("Enter a test score >>")) except ValueError: pass else: if n in range(0, 101): return n |
您可以使用如下辅助功能:
1 2 3 4 5 6 7 8 | 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.") |