Использование функции для генерации чисел - PullRequest
0 голосов
/ 20 февраля 2020
def generate(num):
    res = 0
    for i in str(num):
       res = res + int(i)
    return res + num

Я искал чей-то код для генерации чисел, и я не понимаю, почему он использовал 'str (num)' для итерации i до num. Затем он переводит str (i) снова в int (i).

Что за этим стоит? Почему мы не можем создать

def generate(num):
    res = 0
    for i in num:
       res = res + i
    return res + num

с самого начала?

Спасибо

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Этот фрагмент кода,

def generate(num):
    res = 0
    for i in str(num):
       res = res + int(i)
    return res + num

предполагает, что num является значением numerical, и добавляет отдельные цифры данного числа для получения res, а затем добавляет res к числу. Само собой, поэтому, когда вы вызываете generate(123), он добавляет (1 + 2 + 3) + 123, который выдает 129


Второй фрагмент кода вызывает ошибку, когда num является числовым значением.

Надеюсь, это поможет!

1 голос
/ 20 февраля 2020

Превращая число в строку, вы можете перебирать различные цифры.

Попробуйте это:

for c in str(123):
   print(c)

Конечно, c - это строка, поэтому, если вы хотите использовать di git в качестве числа, вам нужно привести его обратно к int.

Другими словами, первая функция, которой вы поделились, вычисляет сумму цифр число. Вторая функция, которой вы поделились, вычислила бы сумму чисел в итерируемом, как список целых чисел.

Одиночный int не является итеративным, в то время как одиночный str - так что for x in y: будет работать, если y - str, но вызовет ошибку, если y int.

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