【问题标题】:Changing condition statement from x >= 0 to x > 0将条件语句从 x >= 0 更改为 x > 0
【发布时间】:2018-01-31 14:43:59
【问题描述】:

只是通过一本 Python 3.x 自学书。我有一个基本代码,它允许用户输入一个非负整数序列。当用户输入负整数时,序列停止并打印结果。看起来是这样的:

entry = 0
sum = 0
print("Enter numbers to sum, negative number ends list: ")

while entry >= 0:
    entry = int(input())
    if entry >= 0:
        sum += entry
print("Sum =", sum)

现在我进入了本书的练习题部分。它询问 if 语句的条件是否可以使用

> 

而不是

>= 

如果while循环的条件可以使用 >

而不是

>=

我显然已经尝试了这两种组合,并注意到 > 可以用于 if 条件而不是 >=,这不会影响程序。但是,如果我将 >= 换成 > in while 语句,程序将在运行后立即停止,显示 Sum=0,不允许用户输入任何整数。为什么交换 if 条件不会改变任何东西,但交换 while 条件会影响程序?

【问题讨论】:

  • entry 从零开始。如果while 条件需要entry > 0,则永远不会进入循环。
  • 你明白while循环的任务是什么吗?
  • 各位评论者应该仔细阅读问题。
  • 对于这类问题,Pythontutor 是一个很好的工具,可以帮助您了解为什么会发生这种情况。
  • 旁白:为您自己的对象使用内置函数的名称(尤其是像sum 这样常见且有用的名称)被认为是一种不好的形式。如果您的指南推荐该名称,我会怀疑它对 Python 风格的把握。 (当然,它在许多其他方面可能仍然非常有用。)

标签: python


【解决方案1】:

如果您按顺序阅读每个语句,您可能会看到发生了什么:

entry = 0

条目为零 ...

while entry > 0:

当条目大于零时,执行此操作..

但是由于 entry 不大于零,while 循环永远不会运行。在第一次调用循环之前检查该语句,因此您的程序将继续执行下一条语句 (print)。

当您拥有>= 时,您还允许值 0 - 因此“当条目大于或等于零时”允许循环运行。

【讨论】:

  • 非常感谢您没有马上对我大喊大叫 :)。我想我现在明白了。我还想知道为什么将 if 语句中的 >= 更改为 > 不会影响程序,但我相信它确实会影响程序,但我看不到它在命令中发生。所以当条件 >= 时,语句将 int 值 0 加到变量 sum 中,但是当条件 > 时,条件不成立,所以什么也不加到变量 sum 中。我是错的吗?
  • 嘿,问题是>是否可以在if语句中使用而不是while循环:D
  • 其实你是对的。但我要问两个:(
  • 所以我都回答了​​
【解决方案2】:

变化

if entry >= 0:
    sum += entry

进入

if entry > 0:
    sum += entry

不会改变程序的行为,因为将 0 添加到任何数字都不会改变值。
while entry >= 0 更改为while entry > 0 会破坏程序,因为在初始化entry = 0 时永远不会进入循环。

【讨论】:

  • 如果您正在寻找答案,请随时点赞并接受答案。祝你好运;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2020-11-04
  • 2021-11-18
相关资源
最近更新 更多