Python打印语句未显示在If in range语句中

时间:2019-02-05 22:34:47

标签: python python-3.x if-statement numbers range

我已经在网上寻找如何在python中编写if in range语句的信息,我很困惑为什么我的print语句没有显示。

print("Hello User What Is The Wind Chill Today?")
windChill = int(input())

if windChill <= -25:
    print("No School!!!")

if windChill >= 0:
    print("Theres School ):")

if int(windChill) in range(-1, -24):
    print("Maybe school")

预期结果是,如果我输入-20,它将说“也许是学校”,但现在当我输入从-1到-24的数字时,它没有显示打印语句。

3 个答案:

答案 0 :(得分:3)

Python的range函数的值递增1。range中的第一个参数为start,第二个参数为stop和第3个(可选) 参数是step,它是递增的。您在这里有2个选项。

从较低的数字开始,然后从较高的数字停止

if int(windChill) in range(-24, -1):

或保留您的财产,但告诉range增加-1

if int(windChill) in range(-1, -24, -1):

以上两种方法都可以为您实现相同的结果,尽管只是因为如果您对它们运行list(),它们都会导致彼此的反向列表

print(list(range(-24, -1)))
#[-24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2]

print(list(range(-1, -24, -1)))
#[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23]

修改

如果深入研究,范围将使用以下公式确定:

  

对于肯定的步骤,范围r的内容由   公式r[i] = start + step*i,其中i >= 0r[i] < stop

     

对于否定步骤,范围的内容仍由   公式r[i] = start + step*i,但约束为i >= 0和   r[i] > stop

     

Reference

因此,从本质上讲,在我的示例(分别为range-1)中,-24实际上排除了停止值,因此请务必考虑到这一点。使用

if int(windChill) in range(-24, 0):
#or
if int(windChill) in range(-1, -25, -1):

答案 1 :(得分:2)

您的范围功能向后。但是,如果使用if-elif- else语法,则无需包括last if条件。

您应该在此处使用if-elif- else语句,如下所示:

print("Hello User What Is The Wind Chill Today?")
windChill = int(input())

if windChill <= -25:
    print("No School!!!")

elif windChill >= 0:
    print("Theres School ):")

else:
    print("Maybe school")

答案 2 :(得分:0)

您的range命令是向后的,它应该从最小(最大负数)到最大。如果您想要的范围是-1至-24,则应执行range(-24, -1)