我已经在网上寻找如何在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的数字时,它没有显示打印语句。
答案 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 >= 0
和r[i] < stop
。对于否定步骤,范围的内容仍由 公式
r[i] = start + step*i
,但约束为i >= 0
和r[i] > stop
。
因此,从本质上讲,在我的示例(分别为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)