Как я могу сложить все числа в диапазоне, который установлен переменными? - PullRequest
0 голосов
/ 04 сентября 2018

Я должен использовать функцию суммы, но она не работает для меня. Вот мой код:

def main():

    print('This program will total all the numbers in a range.')


    num1 = (int(input('Enter a number.')))
    num2 = (int(input('Enter another number (smaller than the first one).')))

    for i in range(num1 - num2 + 1):

        print(i + num2)
    print(sum(range(num1, num2 + 1)))

main()

Сумма во многом всегда неверна, и я не могу понять, должна ли она быть правильной.

1 Ответ

0 голосов
/ 04 сентября 2018

Решение

def main():
    print("\nThis program will total all the numbers in a range.")

    num_1 = int(input("Enter a number: "))
    num_2 = int(input("Enter another number: "))
    something = [num_1, num_2]

    max_num = max(something)
    min_num = min(something)
    new_list = list(range(min_num, max_num+1))

    current_sum = min_num
    for i in new_list[1:]:
        print(f"{current_sum} + {i} = ", end='')
        current_sum += i
        print(f"{current_sum}")

    print(f"\nSum of all numbers in range: {current_sum}")

while True:
    main()

Если вы найдете min и max из двух input, вы можете исключить необходимость ввода пользователем их в правильном порядке.

Для общей процедуры вы можете просто += текущую сумму для каждого числа в range, назначенном пользователем.

В качестве альтернативы вы также можете использовать этот код вместо max & min:

    """Replacing min/max with sorted

    max_num = max(something)
    min_num = min(something)
    new_list = list(range(min_num, max_num+1))

    current_sum = min_num
    """

    something = sorted(something)
    new_list = list(range(something[0], something[1]+1))

    current_sum = new_list[0] 

выход

This program will total all the numbers in a range.
Enter a number: 5
Enter another number: -5
-5 + -4 = -9
-9 + -3 = -12
-12 + -2 = -14
-14 + -1 = -15
-15 + 0 = -15
-15 + 1 = -14
-14 + 2 = -12
-12 + 3 = -9
-9 + 4 = -5
-5 + 5 = 0

Sum of all numbers in range: 0

Fun

Ран 0 до 1000000:)

499995500010 + 999996 = 499996500006
499996500006 + 999997 = 499997500003
499997500003 + 999998 = 499998500001
499998500001 + 999999 = 499999500000
499999500000 + 1000000 = 500000500000

Sum of all numbers in range: 500000500000

Обновление

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

Изменено current_sum с 0 на min_num, а затем начался цикл в new_list[1:]. Это не влияет на сумму, но исключает оператор print, который показал 0 + x = x.

Добавлено использование метода sorted в качестве альтернативы использованию max & min

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