Python 试图打印列表中的数字,TypeError:列表索引必须是整数,而不是str

Python 试图打印列表中的数字,TypeError:列表索引必须是整数,而不是str,python,python-2.7,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])

我试图从文本文件中读取数字(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)
numbers=open('numbers','r')
nums=[]
cnt=1
而cnt 0:
oddNumbers.append(num)
elif编号%7>0:
multiplesOf7.append(num)
打印('奇数:',奇数)
打印('7的倍数:',倍数F7)
我要走了

回溯(最近的最后一次呼叫):['21','26','27','28','7','14',', '36', '90', '85', '40', '60', '50', '55', '45', '78', '24', '63', '75','12']文件 “C:/Users/y0us3f/PycharmProjects/Slimanov/oddmipples.py”,第16行, 在里面 num=int(nums[x])类型错误:列表索引必须是整数,而不是str

进程已完成,退出代码为1


您已经在NUM中迭代值。不再从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']
,但在这种情况下,您甚至不需要这样做,因为您已经将'21'的值存储在x中。

您已经在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']
,但在这种情况下,您甚至不需要这样做,因为您已经将'21'的值存储在x中。

for的
循环迭代
nums
的成员,因此
x
不是整数。您只需要
num=int(x)
。错误明确指出列表中的值是文本,而不是整数。因此,首先必须将其转换为整数,然后对其执行操作。您的
for
循环迭代
nums
的成员,因此
x
不是整数。您只需要
num=int(x)
。错误明确指出列表中的值是文本,而不是整数。因此,首先您必须将其转换为整数,然后对其执行操作。一个小的补充:如果您将
int()
添加到列表创建中,您将不再需要处理字符串,并且可以用对x的引用替换循环中的所有“num”。假设您的文件只包含整数
nums.append(int(numbers.readline().rstrip('\n')))
一个小的添加:如果您将
int()
添加到列表创建中,您将不再需要处理字符串,并且可以用对x的引用替换循环中的所有“nums”。假设您的文件只包含整数
nums.append(int(numbers.readline().rstrip('\n')))