Python 将迭代转换为函数

Python 将迭代转换为函数,python,function,iteration,Python,Function,Iteration,我是Python和一般计算机语言的初学者,我完全不知道如何将这个迭代格式化为函数。迭代将某人的出生年份、月份和日期的总和相加,以创建这些数字的总和,然后第二次迭代将第一个总和相加以创建最终总和。这个 我让用户输入他们的生日、月份和日期(全部转换为int),这是第一个总和的代码(例如:b日期为1997年1月1日=1999年): 然后,第一次迭代取和并将数字相加(示例:1999=1+9+9+9=28): 然后,第二次迭代取第一个和并再次将这些数字相加以创建最终和(例如:28=2+8=10): 您可以

我是Python和一般计算机语言的初学者,我完全不知道如何将这个迭代格式化为函数。迭代将某人的出生年份、月份和日期的总和相加,以创建这些数字的总和,然后第二次迭代将第一个总和相加以创建最终总和。这个

我让用户输入他们的生日、月份和日期(全部转换为int),这是第一个总和的代码(例如:b日期为1997年1月1日=1999年):

然后,第一次迭代取和并将数字相加(示例:1999=1+9+9+9=28):

然后,第二次迭代取第一个和并再次将这些数字相加以创建最终和(例如:28=2+8=10):


您可以将感兴趣的部分考虑到它们自己的功能中

我可能会这样写:

def sum_digits(n):
    return sum(map(int, str(n)))

def magic(y, m, d):
    return sum_digits(sum_digits(y + m + d))

print magic(1997, 1, 1)

我认为这应该起作用:

def numerology(z):
    zstr1=str(z)
    accum1=0
    for x in zstr1:
        accum1 += int(x)
    str2=str(accum1)
    accum2=0
    for x in str2:
        accum2 += int(x)
    return accum2
调用函数

numerology(first_sum)
顺便说一句,(对我来说)这是一种奇怪的方式

编辑: 要添加到Anonymous的函数方式中,可以使用递归方式(具有列表理解)


迭代和函数是完全不同的事情。你想把什么变成一个函数,为什么要这样做?很难理解你到底需要什么好的答案。但是对于一个刚刚接触python的人来说,可能有点难理解,而且编程一般来说是很难理解的。我喜欢这个答案,它简洁易懂。对于新的python用户来说,多了解一点python也是很好的。我也认为这是一个很好的答案,但对初学者来说不是,它让我用另一种方式思考(递归的方式)。这正是我所需要的!你能解释一下函数创建过程吗?我对整个过程感到非常困惑。除了第一行和最后一行之外的所有内容都是您的代码,所以第一行定义函数(name和z是传递给它的参数),最后一行是函数应该作为值返回的内容(变量)。
def sum_digits(n):
    return sum(map(int, str(n)))

def magic(y, m, d):
    return sum_digits(sum_digits(y + m + d))

print magic(1997, 1, 1)
def numerology(z):
    zstr1=str(z)
    accum1=0
    for x in zstr1:
        accum1 += int(x)
    str2=str(accum1)
    accum2=0
    for x in str2:
        accum2 += int(x)
    return accum2
numerology(first_sum)
def numerology(z):
    zstr1=list(str(z))
    res=sum([int(i) for i in zstr1])
    if res>10:
        res=numerology(res)
    return res