【问题标题】:Why does the code executes differently once I introduce else-statement为什么我引入 else 语句后代码执行方式不同
【发布时间】:2019-07-21 10:11:25
【问题描述】:

我今天在CodingBat做练习,遇到一个有趣的问题:

给定一个整数数组,如果该数组在某处的某个 2 旁边包含一个 2,则返回 True。

此代码运行错误一半:

for i in range(len(nums)-1):
    if nums[i] == 2 and nums[i+1] == 2:
        print(True)
    else: 
        print(False)

对于输入nums = [1, 2, 2],它给出输出:False

这段代码给出了True

for i in range(len(nums)-1):
    if nums[i] == 2 and nums[i+1] == 2:
        print (True)

print (False)

我的问题是为什么引入 else 语句会改变代码的工作方式?

【问题讨论】:

  • 我建议你做一些rubber duck debugging的代码。
  • 当然还要确保显示的代码中的缩进是正确的(第二个sn-p中print (False)的范围不清楚)。
  • 代码试图做什么?怎么了”?什么是“正确”?预期和实际输出是多少?请在您的问题中添加这些详细信息。
  • 对不起,伙计们。我刚刚编辑了问题

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


【解决方案1】:

您给出了一半的输出,因为您的第一个代码打印False,然后是True。这是因为您在每次迭代时都在打印。所以第一次迭代检查是否打印了1 == 2False。下一次迭代检查是否打印了2 == 2 所以True

您应该做的是,仅在找到条件时打印True,并从循环中打印break,并且仅在循环用尽且未中断的情况下打印False。这意味着找不到连续的数字,可以使用 for 循环中的 else 子句来完成:

nums = [1, 2, 2]
for i in range(len(nums)-1):
    if nums[i] == 2 and nums[i+1] == 2:
        print(True)
        break
else:
    print(False)

关于你的问题:

为什么引入 else 语句会改变代码的工作方式?

嗯,这是因为它相当于添加了另一个条件。比如这个程序:

x = 5
if x > 7:
    print("BIG!")
else:
    print("small...")

相当于:

x = 5
if x > 7:
    print("BIG!")
if x <= 7:
    print("small...")

因此,通过添加第二个条件,您可以为代码提供另一种操作方式,以防第一个条件失败。如果省略else(第二个条件),则代码别无选择,只是做......什么都没有

例如,在上面的两段代码中,small... 将被打印出来。但在这段代码中:

x = 5
if x > 7:
    print("BIG!")

什么都不会打印!

【讨论】:

  • 非常感谢。现在我明白其中的逻辑了。
猜你喜欢
  • 1970-01-01
  • 2015-05-20
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多