Python命理程序返回错误结果(使用列表)

时间:2018-02-10 02:17:07

标签: python python-3.x list character

我应该写一个程序,它取一个人的全名并返回名字的数值。数值是通过名称中的字母值找到的(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。"总值只是所有名称的数值之和。

2 个答案:

答案 0 :(得分:1)

嗯,我注意到的一件事是你的程序没有考虑名称中的空格。 -96部分很重要,代码正在取字母,将它们转换为Unicode,然后从96减去。空间也有一个Unicode值,但当你从中减去96时,该值就会变为负数,而这又是扭曲总数。所以你需要弄清楚如何超越程序中的空间。

答案 1 :(得分:0)

你应该在循环中添加一个打印总数,你会发现你必须忽略非字母字符。

相关问题