Python 3查找偶数时遇list[i]错误,列表查询失败求助
帮你搞定Python查找偶数的问题
嘿,我来帮你捋捋这段代码里的问题,以及怎么修正它~
问题出在哪?
你这段代码有两个关键问题,导致没法正常查找偶数:
- 搞错数据类型+误用内置变量名:你写了
list = {},但{}在Python里是字典,不是列表!而且list是Python自带的列表类型,用它当变量名会把内置的列表功能覆盖掉,以后想正常用列表都麻烦。 - 键不存在引发错误:你的
while循环往字典里塞的键是1到10,但后面的for x in range(10)会让x从0跑到9,当x=0的时候,字典里根本没有这个键,程序直接报错崩溃,自然没法继续找偶数。
修正后的代码(两种方案)
方案1:用列表实现(更符合你一开始想用list[i]的需求)
既然你本来想操作列表,那咱们就老老实实定义列表,而且换个变量名,别用list:
# 定义空列表,用num_list当变量名,避免覆盖内置list num_list = [] x = 1 while x <= 10: num_list.append(x) # 把x加到列表里 x += 1 # 遍历列表找偶数 for num in num_list: if num % 2 == 0: print(num)
嫌while循环麻烦?直接用range生成列表更简洁:
num_list = list(range(1, 11)) # 直接生成1到10的列表 for num in num_list: if num % 2 == 0: print(num)
方案2:如果非要用字典(其实没必要,不过也能改)
要是你就想试试用字典实现,那得保证遍历的键是字典里有的:
# 用num_dict当变量名,别碰内置的dict num_dict = {} x = 1 while x <= 10: num_dict[x] = x x += 1 # 遍历字典里的所有值找偶数 for num in num_dict.values(): if num % 2 == 0: print(num)
小提醒
以后别用Python的内置类型名(比如list、dict、str这些)当变量名,不然会把自带的功能搞坏,出问题很难查。另外,生成简单的数字序列时,用range()比while循环方便多啦~
内容的提问来源于stack exchange,提问作者elDarius23
相关产品推荐
相关产品推荐

