【问题标题】:Python Numerology Program returning false results (working with lists)Python命理程序返回错误结果(使用列表)
【发布时间】:2018-02-10 02:17:07
【问题描述】:

我应该编写一个程序,获取一个人的全名并返回该姓名的数值。数值由名称中字母的值找到(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”为 26。例如,名称“Zelle”的值为 26+5+12+12+5=60。编写一个程序,计算作为输入提供的单个名称的数值。

将您的解决方案扩展到上一个问题,以允许计算一个完整的名称,例如“Jackson Thomas Mills”。总值就是所有名字的数值之和。

【问题讨论】:

  • 如果有人必须阅读“整个作业问题”,您的问题还不够清楚{downvote},如果问题很清楚,那么后一部分是不必要的。
  • How to debug small programs。你试过调试你的程序吗?
  • 您了解您的代码(尤其是ord(ch) + total - 96 部分)还是只是复制并粘贴教授的代码?请详细了解 ASCII。

标签: python python-3.x list character


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 2012-08-21
      相关资源
      最近更新 更多