Как перезапустить счет на полпути через строку ввода? - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь написать функцию, которая получает любую длину строки положительных или отрицательных целых чисел и добавляет каждое число к итогу, пока значение не опускается ниже нуля. (Он возвращает 0 для любого неверного или пустого ввода.)

У меня проблемы с написанием цикла, который сбрасывает счетчик на ноль, когда он становится отрицательным, и продолжает добавлять с того места, где он остановился.

например
ввод: 1, 2, -4, 1, 1
вывод: 2

Вот мой код:

def sum_earnings():
values = input("Enter a string of pos &/or neg numbers separated by commas (e.g. 1,-3,0,-4): ").split(',')
earnings = 0

try:
    for i in values:
        earnings += int(i)
        while earnings >= 0:
            earnings += int(i)
        else:
            earnings = 0
            continue
    print(earnings)

except ValueError:
    print(0)

return

1 Ответ

1 голос
/ 10 октября 2019

Кажется слишком сложным. Попробуйте следующее:

earnings = 0
for i in values:
    try:
        earnings = max(0, earnings + int(i))  # resets to 0 for negative intermediate sum
    except ValueError:
        earnings = 0
        break  # this will end the loop for invalid input
print(earnings)
...