将迭代转换为函数
converting iteration into a function
我是 Python 和一般计算机语言的初学者,我完全不知道如何将此迭代格式化为函数。迭代将某人的出生年月日相加,将其相加得出这些数字的总和,然后第二次迭代采用第一个和,并将这些数字相加得出最终总和。这个
我让用户输入他们的生日、月份和日期(全部转换为 int),这是第一个总和的代码(示例:A bday of 01/01/1997= 1999):
first_sum=b_yr + b_dy + b_mo
然后第一次迭代求和并将数字相加(示例:1999 = 1+9+9+9 = 28):
z = first_sum
zstr1=str(z)
accum1=0
for x in zstr1:
accum1 += int(x)
(accum1)
然后第二次迭代采用第一个总和并再次将这些数字相加以创建最终总和(示例:28 = 2+8 = 10):
str2=str(accum1)
accum2=0
for cnt2 in str2:
accum2 += int(cnt2)
您可以将有趣的部分分解成它们自己的功能。
我可能会这样写:
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 的功能方式,递归方式(具有列表理解)。
def numerology(z):
zstr1=list(str(z))
res=sum([int(i) for i in zstr1])
if res>10:
res=numerology(res)
return res
我是 Python 和一般计算机语言的初学者,我完全不知道如何将此迭代格式化为函数。迭代将某人的出生年月日相加,将其相加得出这些数字的总和,然后第二次迭代采用第一个和,并将这些数字相加得出最终总和。这个
我让用户输入他们的生日、月份和日期(全部转换为 int),这是第一个总和的代码(示例:A bday of 01/01/1997= 1999):
first_sum=b_yr + b_dy + b_mo
然后第一次迭代求和并将数字相加(示例:1999 = 1+9+9+9 = 28):
z = first_sum
zstr1=str(z)
accum1=0
for x in zstr1:
accum1 += int(x)
(accum1)
然后第二次迭代采用第一个总和并再次将这些数字相加以创建最终总和(示例:28 = 2+8 = 10):
str2=str(accum1)
accum2=0
for cnt2 in str2:
accum2 += int(cnt2)
您可以将有趣的部分分解成它们自己的功能。
我可能会这样写:
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 的功能方式,递归方式(具有列表理解)。
def numerology(z):
zstr1=list(str(z))
res=sum([int(i) for i in zstr1])
if res>10:
res=numerology(res)
return res