【问题标题】:Lucky Name Number Challenge In PythonPython中的幸运数字挑战
【发布时间】:2017-02-23 17:09:07
【问题描述】:

我必须在 python 中创建一个幸运的名字号码程序,但我一直遇到很多错误。 如果您不知道幸运数字是什么,它基本上是字母表中的每个字母都有一个值,然后您将这些值添加到您的名字和第二个名字中,例如 约翰·多伊

165 465 1+6+5 = 12 4+6+5 = 15 15 + 12 = 27 2+7 = 8 那么 8 = 有外交技能

这是我到目前为止所做的:

#这将一直到z charDict = {'A':1,'B':2,'C':3,'D':4} # 示例名称 - while 循环将在这里 名字 = 'AAB' 姓氏 = 'DCDD' # 将字符串拆分为字符列表 firstNameChars = 列表(名字) lastNameChars = 列表(姓氏) # 总结价值 名字总和 = 0 姓氏总和 = 0 对于 firstNameChars 中的 chr: firstNameSum += charDict[chr] 对于 lastNameChars 中的 chr: lastNameSum += charDict[chr] # 将总和转换为字符串。在此示例中,这将是“2024” 组合名称 = str(firstNameSum) + str(lastNameSum) # 将字符串拆分为字符列表 组合名称数字 = 列表(组合名称) # 总结它们 最终总和 = 0 对于组合名称中的 dgt: finalSum += int(dgt) # 打印幸运数字 打印最终总和

所以我的问题是,我该从哪里开始,因为数字加起来不正确,字母的值也不正确,所以基本上我该如何正确计算

【问题讨论】:

  • 你的问题是什么?

标签: python python-3.x


【解决方案1】:

我真的不明白如何:john doe 给出 165 465 以及如何:AAB DCDD 给出 2024。 但是,将字母转换为数字并将数字求和的标准方法如下:

def letters_to_numbers(name):
    sum_ = 0
    for letter in name:
        sum_ += ord(letter.upper())-64 #ord("A")=65 minus 64 -> 1
    return sum_

def sum_digits(number):
    sum_ = 0
    while number:
        sum_ += number%10
        number //=10
    return sum_

sum_digits(
    sum_digits(letters_to_numbers("john"))
   +sum_digits(letters_to_numbers("doe")))

【讨论】:

  • 您似乎会反复调用sum_digits,直到总和小于10。可能是一个while循环?
  • OK 如果你想 sum_digits 直到 sumwhile number<10: number = sum_digits(number)
  • 我建议你更新你的答案来做到这一点。无论如何我都赞成,因为你完美地说明了这个想法,而且我很长时间没有看到有人使用sum_ 而不是sum。这实际上是正确的做法。
【解决方案2】:

考虑到您总是将数字拆分为数字级别,这很有效,我让您将其包装在一个函数中并修改字典以添加其他字母

first = 'aaa'
last = 'bbb'
name = first + last
dicti = {'a':1, 'b':2, '1':1, '2':2 ,  '3':3 ,  '4':4 ,  '5':5 ,  '6':6 ,
            '7':7 ,  '8':8 ,  '9':9 ,  '0':0}
while len(name) >1:
    sum = 0
    for letter in name:
        sum = sum + dicti[letter]
    name = str(sum)
final_sum = int(name)

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2017-01-25
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多