python如何检验数字范围是否连续_检查python中的数字是否在某个范围内(带循环)?...

这篇博客探讨了如何在Python中编写程序,确保用户输入的测试分数位于0到100的范围内。通过使用循环和条件语句,可以确保用户不断输入,直到他们输入的数字符合要求。同时,文章还提到了处理非数字输入的可能性,并给出了相应的处理方法。
摘要由CSDN通过智能技术生成

本问题已经有最佳答案,请猛点这里访问。

以下是我的代码:

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之间的分数。

如果用户输入的测试分数超出该范围,我希望程序告诉用户重写该数字。我不希望程序以错误结束。我该怎么做?

创建一个永远循环的助手函数,在每个循环上调用input()。当输入正确的值时,返回它,否则打印一个错误并让循环再次询问。

没有人想检查输入是否是数字?

@FP:这不是规范的一部分。当然,这很容易添加。

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中都有效。

他不必说他用的是哪一种,他用的是int(input,这一事实很好地证明了这是py3。

@艾伯特:它暗示了这一点,但没有任何证据。我只写python 2.x,但通常在print()中使用括号。我也会在这里编写int(input(...)),只是为了让代码成为未来的证据。

恕我直言,显然是初学者的人不会被教导编写通常也适用于Python3的Python2代码;而是被教导编写Python3代码。

@艾伯特:我认为我们正在讨论一个无关紧要的问题。因此,我建议我们就到此为止。

首先,您必须知道如何检查值是否在范围内。这很容易:

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)

正如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

如果范围是0到1000000呢?你能把n和那个范围内的每个数字作比较吗?

@NPE:你为什么要这样做?就这样。(在python 2中,您希望使用xrange而不是range)您不了解基本的python吗?

@AbarnetNPE正在讨论范围内的性能问题。使用0 <= n <= 1000000的速度要快得多。

@从python 3开始,range是一个类生成器的类型,它定义了一个自定义__contains__()。假设方法是正确实现的,这不是一种延伸。

@米莉莫斯:酷,我不知道。

@MarkusInterwaDitzer的要点是,python 3.x range()和(可能)python 2.x xrange()可能没有想象中的性能问题。(不确定后者,因为xrange()没有__contains__()方法。)

@markusinterwaditzer:鉴于print函数和input的使用(而不是raw_input)返回字符串,OP显然使用了python 3。

@millimouse:在python 2.7.3中,xrange()确实存在想象中的性能问题。n in xrange(...)迭代这些值。

正确的。python 2.x上的2**30 in xrange(2**31)需要一段时间,而在3.x下,2**30 in range(2**31)会立即返回。所以这只是Python3.x下的一个好方法

@米莉穆斯:我在答案中加入了python 3注释。但是OP显然使用的是python 3,而且是一个初学者,所以他对python 2的关心可能比他对ruby或haskell的关心更多。

您可以使用如下辅助功能:

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.")

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值