lzb1001 发表于 2022-12-9 18:02:54

关于for循环的遍历

本帖最后由 lzb1001 于 2022-12-9 18:14 编辑

letters={'g': 1,'o': 2,'d': 1}
for letter in letters.keys():# 遍历键
          for i in range(letters): # 遍历值
                     print(letter) # 打印输出字母

g
o
o
d
>>>

不知注解是否正确?

另外,对这种嵌套的for循环遍历不是很理解它的逻辑,所以对它输出或返回的结果不太理解,就是为何会返回上面的结果?
而下面又是这样的结果,越看越晕。




abc={'g': 1,'o': 2,'d': 1}
for a in abc.keys():# 遍历键
    for i in range(abc): # 遍历值
      print(i) # 打印输出字母

0
0
1
0
>>>

请大神不吝指点。

tommyyu 发表于 2022-12-9 18:14:54

这段代码是将 letters 中的每一个键打印(其对应的值)次,比如 'g' 打印 1 次,'o' 打印 2 次,'d' 打印 1次,其中用换行隔开,其内部的循环起到了打印多次同一个键的作用,外部循环起到了遍历值的作用。

jackz007 发表于 2022-12-9 18:30:43

letters = {'g': 1,'o': 2,'d': 1}
for letter in letters . keys():      # 遍历键
    for i in range(letters): # 根据 letters 的值决定循环次数,例如,当 letter = 'g' 时,letters['g'] = 1,就循环 1 次;当 letter = 'o' 时,letters['o'] = 2,就循环 2 次
      print(letter)                # 根据 letters 的值重复打印字母 letter,例如,letters['g'] = 1,'g' 被打印 1 次,letters['o'] = 2,'o' 被打印 2 次

lzb1001 发表于 2022-12-9 18:39:01

下面这段代码和结果又如何理解呢?

abc={'g': 1,'o': 2,'d': 1}
for a in abc.keys():# 遍历键
    for i in range(abc): # 遍历值
      print(i) # 打印输出字母

0
0
1
0
>>>

lassiter 发表于 2022-12-9 19:12:35

abc={'g': 1,'o': 2,'d': 1}
for a in abc.keys():# 遍历键
    for i in range(abc): # 遍历值
      print(i) # 打印输出值,你仔细比对两串代码,在这里就不一样

lzb1001 发表于 2022-12-9 21:24:28

我想打印出单词pneumonia:

letters = {'p':1, 'n':1, 'e':1, 'u':1, 'm':1, 'o':1, 'n':1, 'i':1, 'a':1}

for letter in letters.keys():# 遍历每个键
    for i in range(letters): # 定义每个键打印的次数
      print(letter, end='') # 打印输出每个键(即字母)

结果如下:

pneumoia
>>>

对比原单词,少了一个字母n

不知道怎么回事,请大神帮忙看看

gywjj 发表于 2022-12-9 21:38:29

字典的键是唯一的啊,不是你写了两个,就会有两个。

gywjj 发表于 2022-12-9 21:39:38

后面加的键值会覆盖前面的,你在你那个上面,运行一下print(letters )就知道了。

lzb1001 发表于 2022-12-9 21:41:25

gywjj 发表于 2022-12-9 21:39
后面加的键值会覆盖前面的,你在你那个上面,运行一下print(letters )就知道了。

那要怎么修改代码才能打印出完整的单词呢?

gywjj 发表于 2022-12-9 22:03:06

本帖最后由 gywjj 于 2022-12-9 22:19 编辑

lzb1001 发表于 2022-12-9 21:41
那要怎么修改代码才能打印出完整的单词呢?

关键是你这个前提就不成立,你不能用字典,用字典,按你这个思路是不行的。字典的KEY只能有一个,除非你把K和V互换一下,用这种方式
abc={'1':'p','2':'n', '3':'e', '4':'u', '5':'m', '6':'o', '7':'n', '8':'i', '9':'a'}
for a in abc.keys():# 遍历键
    print(abc, end='') # 打印输出字母

lzb1001 发表于 2022-12-9 22:07:08

本帖最后由 lzb1001 于 2022-12-9 22:14 编辑

gywjj 发表于 2022-12-9 22:03
关键是你这个前提就不成立,你不能用字典,用字典,按你这个思路是不行的。字典的KEY只能有一个,除非你 ...

谢谢指点,不过测试发现返回提示错误呢

-crash- 发表于 2022-12-9 22:46:31

lzb1001 发表于 2022-12-9 18:39
下面这段代码和结果又如何理解呢?

abc={'g': 1,'o': 2,'d': 1}


abc为1,range(1)里面只有0,输出0,换行
abc为2,range(2)里面只有0和1,输出0,换行,输出1,换行
abc为1,range(1)里面只有0,输出0,over

lzb1001 发表于 2022-12-9 23:05:49

-crash- 发表于 2022-12-9 22:46
abc为1,range(1)里面只有0,输出0,换行
abc为2,range(2)里面只有0和1,输出0,换行,输出1,换 ...

哦,这个懂了,感谢感谢
页: [1]
查看完整版本: 关于for循环的遍历