我应该写一个程序,它取一个人的全名并返回名字的数值。数值是通过名称中的字母值找到的(a = 1,b = 2 ... z = 26)。
这是我到目前为止所做的:
def main ():
name = input("What is the whole name? ").lower() #get name, make all lowercase
alph = [" abcdefghijklmnopqrstuvwxyz"] #list of characters
total = 0 #apply value for each character in name
for ch in name:
total = ord(ch) + total - 96
print("The numerical value of the name is \n", total) #print the result
main()
出于某种原因,我的程序使用了我输入的一些名称(例如dani = 28),但其他名称(特别是较长的名称)没有返回正确的答案。我做错了什么?
这是整个作业问题供参考:
数字命理学家声称能够根据"数值"来确定一个人的性格特征。一个名字。名称的价值是通过总结名称字母的值来确定的,其中' a'是1,' b'是2,' c' 3等等,直到' z'例如,名字" Zelle"将具有值26 + 5 + 12 + 12 + 5 = 60。编写一个程序,计算作为输入提供的单个名称的数值。
将您的解决方案扩展到上一个问题,以便计算完整的名称,例如" Jackson Thomas Mills。"总值只是所有名称的数值之和。
答案 0 :(得分:1)
嗯,我注意到的一件事是你的程序没有考虑名称中的空格。 -96部分很重要,代码正在取字母,将它们转换为Unicode,然后从96减去。空间也有一个Unicode值,但当你从中减去96时,该值就会变为负数,而这又是扭曲总数。所以你需要弄清楚如何超越程序中的空间。
答案 1 :(得分:0)
你应该在循环中添加一个打印总数,你会发现你必须忽略非字母字符。