ustone 发表于 2024-12-19 22:00:07

Python的循环结束else分支语义与英文意思间有点别扭吧?

Python的循环结束else分支语义与英文意思间有点别扭吧?
为什么用else这个关键词?
我觉得loopdone不错

scoopydoo 发表于 2024-12-20 03:49:55

for ... else ... 没有任何问题,如果讲英语的人不觉得别扭而你觉得别扭,那肯定是你的问题 ;P

scoopydoo 发表于 2024-12-20 04:23:48

如果说在这里能使用 else 有什么争议的话,那就是有部分人认为 nobreak 是更合适的选择,因为如果在 for 循环内使用 break 的话会跳过 else 语句块。

但是,俺觉得还是用 else 更好一些,首先少一个关键字是一个巨大的优点,其次 nobreak 这样的否定式的关键字感觉更别扭。

ustone 发表于 2024-12-20 07:26:43

本帖最后由 ustone 于 2024-12-20 07:28 编辑

scoopydoo 发表于 2024-12-20 04:23
如果说在这里能使用 else 有什么争议的话,那就是有部分人认为 nobreak 是更合适的选择,因为如果在 for 循 ...

nobreak 见名知意,
else一般是二选一,for执行完了执行else就不是二选一了

scoopydoo 发表于 2024-12-20 08:02:51

ustone 发表于 2024-12-20 07:26
nobreak 见名知意,
else一般是二选一,for执行完了执行else就不是二选一了

那是你没理解 for的含义,事实上 for 也是一个条件语句

ustone 发表于 2024-12-20 08:10:31

scoopydoo 发表于 2024-12-20 08:02
那是你没理解 for的含义,事实上 for 也是一个条件语句

if xxx:
a
else:
b
a和b不会都执行,改成for就会都执行(如果没break)

scoopydoo 发表于 2024-12-20 08:17:01

本帖最后由 scoopydoo 于 2024-12-20 08:18 编辑

ustone 发表于 2024-12-20 08:10
if xxx:
a
else:


这里的 for 可以理解为迭代没有结束就执行其后面的语句块,如果结束了就执行 else 语句块。

这个问题有过广泛的讨论,一个语法糖而已,其实不论是 else 或者是 nobreak 或者其他什么,都谈不上完美,选择 else 至少有关键字少的优势。

用不着纠结它用了 else 或者 nobreak,掌握并熟练使用它就行了 ......

ustone 发表于 2024-12-20 08:19:00

def fn(ls):
    dict1={}
    for i in ls:
      dict1=dict1.get(i,0)+1
    ls=list(dict1.items())
    for item in ls:
      k,c=item
      if c>1:
            return True #假如印刷到页尾
    else: #新的一页
      return False
这段代码,如果印刷到书本,那个else很容易被误以为和if配套,而不是和for配套

补充内容 (2024-12-23 13:17):
def fn(ls):
    dict1={}
    for i in ls:
      dict1=dict1.get(i,0)+1
    for c in dict1.values():
      if c>1:
            return True
    else:
      return False


补充内容 (2024-12-23 13:19):
dict1【i】

ustone 发表于 2024-12-20 08:31:05

scoopydoo 发表于 2024-12-20 08:17
这里的 for 可以理解为迭代没有结束就执行其后面的语句块,如果结束了就执行 else 语句块。

这个问 ...

我以前没有关注过Python的话题,最近才开始学,自己感觉到这个问题,可见很多人都对这点有异议。
看一下上一楼贴的代码就会明白。
事实上,我感觉Python的语法很多地方都比较简单优美自然,而且避免了C语言的许多坑(如《C陷阱与缺陷》一书提到的)

scoopydoo 发表于 2024-12-20 08:46:32

ustone 发表于 2024-12-20 08:19
这段代码,如果印刷到书本,那个else很容易被误以为和if配套,而不是和for配套

首先,现在还有人在书本上看代码吗?近些年出版的书,其上面用到的例程,都会有代码供下载的。

其次,Python 对缩进的要求是硬性的,如果书籍排版不能满足这个要求,那这个书不读也罢 ......

ustone 发表于 2024-12-20 08:52:41

scoopydoo 发表于 2024-12-20 08:46
首先,现在还有人在书本上看代码吗?近些年出版的书,其上面用到的例程,都会有代码供下载的。

其次, ...

代码在同一页还好,缩进很明显,如果代码隔了一页,很容易搞错。

scoopydoo 发表于 2024-12-20 09:11:37

ustone 发表于 2024-12-20 08:52
代码在同一页还好,缩进很明显,如果代码隔了一页,很容易搞错。

书籍都有配套的代码,用有语法高亮的编辑器看代码才是正确的方式。

ustone 发表于 2024-12-20 15:59:40

scoopydoo 发表于 2024-12-20 09:11
书籍都有配套的代码,用有语法高亮的编辑器看代码才是正确的方式。

看书的时候没有开电脑

lxa000 发表于 2024-12-21 01:43:19

为了学习python,
我买了 python 3剑客。
书里的代码可以索要。


ustone 发表于 2024-12-21 05:53:44

lxa000 发表于 2024-12-21 01:43
为了学习python,
我买了 python 3剑客。
书里的代码可以索要。

Python语言还能搞单片机?
页: [1] 2
查看完整版本: Python的循环结束else分支语义与英文意思间有点别扭吧?