这个程序应该给出一个名字的命运号。它给出了所有其他用户输入的正确结果。但是,如果用户名的目标编号为10,则输出为10而不是1。while循环应该做到这一点。我试图通过放入一条print语句来避开它,但它仍然不起作用。哪里出了问题?
#!usr/bin/env python3
name = input("Please Enter Your Full Name Without Spaces in between: ")
if name.isalpha():
name1 = name.upper()
initsum = 0
d = {'A':1,
'B':2,
'C':3,
'D':4,
'E':5,
'F':8,
'G':3,
'H':5,
'I':1,
'J':1,
'K':2,
'L':3,
'M':4,
'N':5,
'O':7,
'P':8,
'Q':1,
'R':2,
'S':3,
'T':4,
'U':6,
'V':6,
'W':6,
'X':5,
'Y':1,
'Z':7}
name2 = list(name1)
initsum = 0
for chr in name2:
initsum += d[chr]
if initsum == 10:
print("Your destiny number is 1")
else:
check = str(initsum)
if len(check)>1:
tot=0
while(initsum>0):
dig=initsum%10
tot=tot+dig
initsum=initsum//10
print("Your destiny number is", tot)
else:
print("Your destiny number is", initsum)
else:
print("Name is invalid")发布于 2019-11-17 20:51:19
你用太多的方式把这个函数复杂化了。同样的事情的一个简单示例是:
name = input("Please Enter Your Full Name Without Spaces in between: ")
destiny = sum(d[char] for char in name.upper())
while len(str(destiny)) > 1:
destiny = sum(int(x) for x in str(destiny))如果您不熟悉sum (或者如果您想要一个更长、更易读的版本),它基本上与执行以下操作相同:
name = input("Please Enter Your Full Name Without Spaces in between: ")
destiny = 0
for char in name.upper():
destiny += d[char]
while len(str(destiny)) > 1:
tmp = destiny
destiny = 0
for char in str(tmp):
destiny += int(char)https://stackoverflow.com/questions/58900530
复制相似问题