这是我的密码:
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之间的分数。
如果用户输入的测试分数超出该范围,我希望程序告诉用户重写该数字。我不希望程序以错误结束。我该怎么做?
可以使用以下帮助器函数:
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.")
首先,你必须知道如何检查一个值是否在一个范围内。这很容易:
if n in range(0, 101):
几乎是英语的直接翻译。(这对于Python3.0或更高版本来说只是一个很好的解决方案,但显然您正在使用Python3。)
接下来,如果你想让他们继续尝试,直到他们输入有效的内容,只需循环执行:
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)
正如fp所指出的,如果他们输入的不是整数,比如“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
while True:
n = int(input("enter a number between 0 and 100: "))
if 0 <= n <= 100:
break
print('try again')
就像您问题中的代码一样,这在Python2.x和3.x中都适用。
检查给定的数字是否在给定范围内。 使用算术比较来检查给定的数字是否在指定的范围内。如果没有指定第三个参数 end ,则范围被认为是从 0 到 start 。 const inRange = (n, start, end = null) => { if (end && start > end) end = [start, (start = end)][0]; return end == nu
以下代码根据变量所处的范围,为变量指定特定值。 这工作得很好,但是我想知道是否有一种更Pythonic的方法来编写下面的条件块。
我的Java外汇应用程序处理工作时间。我在两个日期字段中有工作开始和结束时间。我成功地计算了两个日期之间的差异时间;但是现在我如何检查结果是在晚上还是白天的范围内???一天从6点开始,到22点结束。例如,有人在凌晨3点到晚上11点之间工作。下面是我如何计算总工作小时数的。 我们有可以工作到晚上10点以上的工人,工资也不一样。如果他们在晚上10点以后工作,他们将获得特殊报酬。我们在工作结束时付款。他
问题内容: 有没有一种方法可以在不执行此冗余代码的情况下测试范围: ? 就像一个函数: 用法: ? PHP是否具有这种内置功能?还是其他方式可以做到? 问题答案: 我认为您不会获得比您的功能更好的方法。 它是干净的,易于遵循和理解的,并返回条件的结果(无混乱)。
问题内容: 我有一系列包含开始日期和结束日期的范围。我想检查日期是否在该范围内。 和似乎有点尴尬。我真正需要的是这样的伪代码: 不确定是否相关,但是我从数据库中提取的日期带有时间戳。 问题答案: 对我来说似乎并不尴尬。请注意,我是这样写的,而不是 因此,即使testDate与以下几种情况之一完全相同,它也可以正常工作。
有没有办法确定一个数字是否在两个特定数字的范围内,如果这些数字正在变化?例如: 确定 num3 是否介于 num1 和 num2 之间是相当容易的。但是,假设 num1 和 num2 在程序运行期间动态变化: 其他一切都保持不变。现在,与以前相同的算法将不再有效。有没有一种优雅的方法来检查数字是否使用动态变化的最大值和最小值的范围?