hhzczy 发表于 2018-10-20 09:14:08

python:if…else,有点困惑

names = ['Tom', 'Mike','Alice', 'Nick']

for name in names:        #1
    if name == 'Alice':
      print('Female')
      break
    print('循环数据:' + name)
   
    else:
        print('没有循环数据')
       
print('结束循环')

————————
以上是一段错误代码,删去红色空格部分就正确了。

输出为:
循环数据:Tom
循环数据:Mike
Female
结束循环
————————

我想问的是自己心中的一点疑惑——我从一个小白的逻辑上来看觉得不应该删除这些空格,以下是我的一顿“歪理”:
        for…in…去遍历列表,然后出现了if的情况或else的情况;
        所以,if和else应该并列(不是if的情况,就是else的情况)
        因此代码中else应该和if对齐。

而残酷的现实是——为什么else前边不加空格呢????

大虾,恳请传道授业解惑。

alltolove 发表于 2018-10-20 09:33:43

你这个用法是for。。else语句,用于处理遍历失败

hhzczy 发表于 2018-10-20 09:45:17

本帖最后由 hhzczy 于 2018-10-20 09:50 编辑

alltolove 发表于 2018-10-20 09:33
你这个用法是for。。else语句,用于处理遍历失败

names = ['Tom', 'Mike','Alice', 'Nick']

for name in names:
    if name == 'Alice':
      print('Female')
      break
    else:
    print('循环数据:' + name)
   
else:
    print('没有循环数据')
       
print('结束循环')

——————————
我一楼举的例子不太好。

在此追问一下:
我上边这个代码也是错的,删掉红底的内容就变正确了。

为什么不能加else和if搭配,说明两种情况?
if是一种,else是另外一种。

我还没有形成编程思维,纯粹从字面上理解。恳请解惑。

塔利班 发表于 2018-10-20 09:49:29

要么是if else要么for else
你原来的缩进中间print缩进中断了if else的联系
for else也不在一个缩进
缩进是python的灵魂,这个逻辑不能差

你最后发的else完了要缩进,
你没有给
else:
    print('循环数据:' + name)
如果你是else没有内容可以写,
可以在下面缩进写个pass

else:
    pass
或者干脆不写,你都没else操作
页: [1]
查看完整版本: python:if…else,有点困惑