Как найти сумму введенного списка чисел - PullRequest
3 голосов
/ 24 октября 2019

Я все еще очень плохо знаком с python и работаю над школьным заданием, которое должно быть циклом, позволяющим пользователю вводить серии чисел, которые будут продолжаться до тех пор, пока введенное число будет равно 0 или больше. После ввода отрицательного числа программа должна создать сумму всех введенных чисел. Любая помощь с благодарностью, спасибо!

#This program calculates the sum of multiple numbers

#Variable to control the loop
keep_going = >-0

#Initialize accumulator
total = 0

#Calculate the sum of numbers
while keep_going == 0:
    int(input('Enter a number: '))
    keep_going = int(input('Enter a number: '))

Ответы [ 6 ]

5 голосов
/ 24 октября 2019

Добро пожаловать в StackOverflow Christian и добро пожаловать в великий мир программирования =)

Несколько замечаний по поводу вашего кода:

  • keep_going = >-0 не имеет смысла. > - это оператор сравнения, вы должны использовать его для сравнения двух выражений, например, var1 > var2, и он вернет логическое значение.
  • while keep_going == 0: - хорошее начало, но он не будет делать то, чтоты хочешь. Цикл должен продолжаться, если введенное число больше или равно нулю, а не только если keep_going равно нулю. Изменение == на >=.
  • int(input('Enter a number: ')) - это путь, но почему вы использовали его дважды? Кроме того, второй раз вы сохраняете только введенный номер в переменной.
  • Наконец, вам действительно нужно использовать total в цикле для хранения ввода пользователя.

Удачи!

PS: Несмотря на то, что stackoverflow действительно хорош для быстрого получения решения, я действительно советую вам действительно понять, почему ваш код неправильный, и почему работает указанное решение. Это очень поможет вам стать хорошим программистом;)

2 голосов
/ 24 октября 2019
#Calculate the sum of numbers
saved_numbers = [] # A list of numbers to fill up. 
while True: # A way to write 'keep doing this until I stop ('break' in this case...)'
    number = int(input('Enter a number: '))
    if number < 0: # If the number is negative
        break # Exits the current while loop for us. 
    else: # Otherwise, save the number.
        saved_numbers.append(number) 

sum = sum(saved_numbers) # Getting the sum of the numbers the user entered!
print(sum)
0 голосов
/ 24 октября 2019

Вы можете попробовать это решение:

def func():
    i = 0
    while i >= 0:
        i = int(input('Enter a number: '))
        yield (i >= 0) * i

print(sum(func()))

Имейте в виду, что в Python True равно 1 и False равно 0.

0 голосов
/ 24 октября 2019

Это также можно сделать с помощью recursion вместо while. т.е.:

def count_total(total=0):
    keep_going = int(input('Enter a number: '))
    if keep_going >= 0:
        total += keep_going
        count_total(total)
    else:
        print('Total : %d' % total)


count_total()
0 голосов
/ 24 октября 2019

Просто следите за введенными числами и вычисляйте сумму позже, используя функцию python in-built sum.

keep_going = int(input('Enter a number: '))
entered_nums = []
while keep_going >= 0:
    entered_nums.append(keep_going)
    keep_going = int(input('Enter a number: '))

print('Entered numbers : ', entered_nums)
print('Entered numbers sum : ', sum(entered_nums))
0 голосов
/ 24 октября 2019

Вы можете сделать это проще. Вам не нужна переменная keep_going. Просто используйте переменную total и добавьте к переменной, если введенное число равно 0 или больше 0. Выйдите из цикла while, если число меньше 0:

#Initialize accumulator
total = 0

#Calculate the sum of numbers
while(True):
    num = int(input('Enter a number: '))
    if num < 0:
        break
    else:
        total = total + num

print(total)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...