Как мне суммировать нечетные индексированные числа в текстовом файле, используя Python - PullRequest
1 голос
/ 30 марта 2019

У меня есть текстовый файл, который читает: 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

Ответы [ 5 ]

3 голосов
/ 30 марта 2019

Если вы хотите суммировать даже индексы каждой строки, вы можете сделать что-то вроде:

for line in openthefile:
    odd_indexed += sum([int(x) for i, x in enumerate(line.split(',')) if i%2==0])
3 голосов
/ 30 марта 2019

Это должно помочь (измените значение на ==1, если вы хотите, чтобы результаты для индекса начинались с 1):

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

enumerate дает индекс, а также само значение, и вы можетепроверьте, какой из них нечетный (или четный, в случае описанного вами желаемого результата).

2 голосов
/ 30 марта 2019

Однострочное решение с genfromtxt numpy.Не нужно делать циклы.

Для четных индексов:

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

2 голосов
/ 30 марта 2019
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))
1 голос
/ 30 марта 2019

ключевым моментом является использование 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))

Надеюсь, что это поможет вам, и прокомментируйте, если у вас есть дополнительные вопросы. :)

...