如何使用python对文本文件中的奇数索引号进行求和

问题描述 投票:1回答:5

我有一个文本文件:1,2,3,4,5。我想编写一个代码,只在文本文件中添加奇数索引号。

我在代码中添加了文本文件中的所有数字。

odd_indexed = 0
openthefile = open('GOT_ratings.txt', "r")

for line in openthefile:
    for num in line.split(','):
        odd_indexed = odd_indexed + float(num.strip())

print("The sum of your numbers is %.1f" %(odd_indexed))

我希望它添加1 + 3 + 5 = 9

python text-files python-3.7
5个回答
3
投票

这应该可以解决问题(如果你想从1开始索引的结果,请编辑到==1):

for i,num in enumerate(line.split(',')):
    if (i%2==0):
        odd_indexed+=float(num)

enumerate给出索引以及值本身,你可以检查哪一个是奇数(或者甚至,在你描述的所需输出的情况下)。


3
投票

如果你想总结每行的索引,你可以做类似的事情:

for line in openthefile:
    odd_indexed += sum([int(x) for i, x in enumerate(line.split(',')) if i%2==0])

2
投票
odd_indexed = 0
i=0
openthefile = open('GOT_ratings.txt', "r")

for line in openthefile:
    for num in line.split(','):
        if i%2!= True:
          odd_indexed = odd_indexed + float(num.strip())
          i+=1
        else:
          odd_indexed = odd_indexed 
          i+=1


print("The sum of your numbers is %.1f" %(odd_indexed))

2
投票

一线解决方案与numpy的genfromtxt。无需循环。

对于偶数指数:

import numpy as np
ans=sum(np.genfromtxt('GOT_ratings.txt',delimiter=',')[::2])

对于奇数指数:

import numpy as np
ans=sum(np.genfromtxt('GOT_ratings.txt',delimiter=',')[1::2])

有关genfromtxt的信息可以在这里找到:https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html


1
投票

关键点是使用enumerate,你可以通过它来处理索引。但是1,3,5的索引是0,2,4,这是偶数,而不是奇数。这是示例代码:

odd_indexed = 0
line = '1, 2, 3, 4, 5'
for i, num in enumerate(line.split(',')):
    # for beginner
    if i % 2 == 1:
        odd_indexed = odd_indexed + float(num.strip())

    # more concise way
    # odd_indexed += float(num.strip()) if i % 2 else 0

print("The odd sum of your numbers is %.1f" % (odd_indexed))

希望对您有所帮助,并在您有其他问题时发表评论。 :)

© www.soinside.com 2019 - 2024. All rights reserved.