关于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
>>>
请大神不吝指点。
这段代码是将 letters 中的每一个键打印(其对应的值)次,比如 'g' 打印 1 次,'o' 打印 2 次,'d' 打印 1次,其中用换行隔开,其内部的循环起到了打印多次同一个键的作用,外部循环起到了遍历值的作用。 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 次 下面这段代码和结果又如何理解呢?
abc={'g': 1,'o': 2,'d': 1}
for a in abc.keys():# 遍历键
for i in range(abc): # 遍历值
print(i) # 打印输出字母
0
0
1
0
>>> abc={'g': 1,'o': 2,'d': 1}
for a in abc.keys():# 遍历键
for i in range(abc): # 遍历值
print(i) # 打印输出值,你仔细比对两串代码,在这里就不一样 我想打印出单词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
不知道怎么回事,请大神帮忙看看 字典的键是唯一的啊,不是你写了两个,就会有两个。 后面加的键值会覆盖前面的,你在你那个上面,运行一下print(letters )就知道了。 gywjj 发表于 2022-12-9 21:39
后面加的键值会覆盖前面的,你在你那个上面,运行一下print(letters )就知道了。
那要怎么修改代码才能打印出完整的单词呢? 本帖最后由 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:14 编辑
gywjj 发表于 2022-12-9 22:03
关键是你这个前提就不成立,你不能用字典,用字典,按你这个思路是不行的。字典的KEY只能有一个,除非你 ...
谢谢指点,不过测试发现返回提示错误呢 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 -crash- 发表于 2022-12-9 22:46
abc为1,range(1)里面只有0,输出0,换行
abc为2,range(2)里面只有0和1,输出0,换行,输出1,换 ...
哦,这个懂了,感谢感谢
页:
[1]