试图从列表中打印数字,TypeError:list indices必须是整数,而不是str

时间:2017-12-02 20:41:21

标签: python python-2.7

我正在尝试从文本文件中读取数字(20个数字)并打印奇数和7的倍数

numbers = open('numbers' , 'r')

nums=[]
cnt=1

while cnt<20:
    nums.append(numbers.readline().rstrip('\n'))
    cnt += 1

print nums

oddNumbers = []
multiplesOf7 = []

for x in nums:
    num = int(nums[x])
    if num%2 > 0 :
        oddNumbers.append(num)
    elif num%7 > 0 :
        multiplesOf7.append(num)

print('Odd numbers: ' , oddNumbers)
print('Multiples of 7: ' , multiplesOf7)

我正在

  

追踪(最近一次打电话):['21','26','27','28','7','14',   “36”,“90”,“85”,“40”,“60”,“50”,“55”,“45”,“78”,“24”,“63”,   '75','12']档案   “C:/Users/y0us3f/PycharmProjects/Slimanov/oddmultiples.py”,第16行,   在       num = int(nums [x])TypeError:list indices必须是整数,而不是str

     

使用退出代码1完成处理

1 个答案:

答案 0 :(得分:2)

你已经在遍历nums中的值。不要再次从nums中查找值:

# nums = ['21', '26', '27', '28', '7', '14', '36', '90', '85', '40', '60', '50', '55', '45', '78', '24', '63', '75', '12']
for x in nums:
    # x is '21', '26', etc.
    num = int(x)
    ...

你得到一个例外是因为你试图使用字符串索引查找nums中的值:nums['21'],但在这种情况下你甚至不需要,因为你已经拥有了值存储在x中的'21'。