[英]Why does this change in If-else statement introduce "'global_variable' is assigned to before global declaration" SyntaxError?
[英]Why does the code executes differently once I introduce else-statement
我今天在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语句会改变代码的工作方式?
您给出的输出是一半,因为您的第一个代码先显示False
,然后显示True
。 这是因为您要在每次迭代中进行打印。 因此,第一次迭代检查是否打印了1 == 2
和False
。 下一次迭代检查2 == 2
是否为True
。
您应该做的是,仅在找到条件并从循环中break
时才显示True
,而仅当循环已用完而没有中断时才显示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!")
什么都不会打印!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.