Python 试图打印列表中的数字,TypeError:列表索引必须是整数,而不是str
我试图从文本文件中读取数字(20个数字),然后打印奇数和7的倍数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])
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')))