Я изменяю переменную, но как я могу вернуть ее исходное состояние в конце функции? - PullRequest
0 голосов
/ 25 ноября 2018

Я отредактировал сообщение, чтобы в нем получалось слово «кросс-сумма» вместо факториала, спасибо за вашу помощь.

def assignment_2():
    # write a function that outputs the cross sum of a number (54321 -> 5 + 4 + 3 + 2 + 1 = 15)

    number = int(input('enter a number'))
    result = 0

    while number:
        result = result + number % 10
        number = int(number / I0)
    return result, number

, когда я вызываю функцию, я получаю результат без проблем, но число = 0, потому что оно проходит через этот цикл.

Вот как я называю функцию

result, number = assignment_2()
print(f'assignment 2: the cross sum of {number} is {result}')

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вам придется сохранить его в другой переменной:

number = int(...)
saved_number = number

...

return result, saved_number

Кроме того, я должен отметить, что здесь вы делаете не факториал, а цифру ,Факториал является произведением всех чисел от 1 до аргумента - например, 5 факториал равен 5 × 4 × 3 × 2 × 1 = 120.

0 голосов
/ 25 ноября 2018

Вы можете использовать входное значение как строку, чтобы получить сумму цифр, ваш алгоритм вообще не нуждается в преобразовании своего ввода:

def digit_sum(x):
    return sum(int(xx) for xx in str(x)), x

def assignment_2():
    return digit_sum(int(input("Please enter a number ")))
0 голосов
/ 25 ноября 2018

Просто сохраните значение в другой переменной:

number = int(input('enter a number'))
orig = number
result = 0

while number:
    result = result + number % 10
    number = int(number / 10)
return result, orig
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...