【问题标题】:Python print statement not showing up in If in range statementPython print 语句未显示在 If in range 语句中
【发布时间】:2019-02-05 22:34:47
【问题描述】:

我在网上查看了如何在 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 的数字时,它没有显示打印语句。

【问题讨论】:

  • range 自然会以+1 递增,除非另有说明。在这种情况下,这是一个空范围,因为没有任何数量的 1s 可以添加到 -1 以到达 -24。你需要它来减少:if int(windChill) in range(-1, -24, -1):
  • 您需要使用range(-24, -1) -24 低于-1。或查看@roganjosh 的评论
  • If-elif-else 将是这里使用的更 Pythonic 的语法。如果您使用 3 个 if 语句,可能会产生意想不到的后果,这是您使用 python 进行条件检查的语法

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


【解决方案1】:

Python 的 range 函数的值递增 1。range 中的第一个参数是 start,第二个是 stop,第三个 (可选) 参数是 @987654326 @ 这是它的增量。您在这里有 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 &gt;= 0r[i] &lt; stop

对于负步,范围的内容仍然由 公式r[i] = start + step*i,但约束是i &gt;= 0r[i] &gt; stop.

Reference

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

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

【讨论】:

  • 可能值得指出的是,range 没有第二个参数,因此上述两个参数都包含边界错误。
【解决方案2】:

你的 range 函数是倒退的。但如果使用 if - elif- else 语法,则不需要包含最后一个 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")

【讨论】:

  • 这根本不是问题。将评估所有 if 条件。事实是,他们的最后一个条件是一个空范围,除非他们创建一个 -1 的步长。
【解决方案3】:

您的range 命令是向后的,它应该从最小(最负)数字到最大数字。如果你想要一个从 -1 到 -24 的范围,你应该这样做 range(-24, -1)

【讨论】:

  • 同样不正确,range 减少是完全没问题的,虽然它如果它增加更容易理解
  • @roganjosh range 可以递减,但默认不会。如果不通过负步骤,range(x, y) 将不会产生任何结果,如果 y &lt;= x
  • @CraigMeier 这正是我在问题下的第一条评论中所说的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 2021-08-06
  • 2021-03-01
  • 1970-01-01
相关资源
最近更新 更多