如何在python中拆分数字并添加它们

时间:2016-07-03 18:12:36

标签: python

我正在开发一个幸运的名字数字游戏,我可以通过定制函数运行它来从名称中获取数字,但我似乎无法将它们加在一起。

到目前为止我的代码:

num = 0

def main():
    name = input('Please enter your name: ')
    for letter in name:
        if letter == 'a' or letter == 'j' or letter == 's':
            num = num + 1
        if letter == 'b' or letter == 'k' or letter == 't':
            num = num + 2
        if letter == 'c' or letter == 'l' or letter == 'u':
            num = num + 3
        if letter == 'd' or letter == 'm' or letter == 'v':
            num = num + 4
        if letter == 'e' or letter == 'n' or letter == 'w':
            num = num + 5
        if letter == 'f' or letter == 'o' or letter == 'x':
            num = num + 6
        if letter == 'g' or letter == 'p' or letter == 'y':
            num = num + 7
        if letter == 'h' or letter == 'q' or letter == 'z':
            num = num + 8
        if letter == 'i' or letter == 'r':
            num = num + 9
        getDigitSum()

def getDigitSum(num):
    sum = 0
    while num > 0:
        num, remainder = divmod(num, 10)
        sum += remainder
    return sum

main()

2 个答案:

答案 0 :(得分:1)

getDigitSum是一个函数,它接受一个参数num,它用它做一些计算并返回一个数字。

你不仅没有传递任何参数,也没有将其返回值存储在任何地方。

getDigitSum()替换为print(getDigitSum(num))

我也很确定该行不应该在你的for循环中,但我并不完全理解你的程序规则。

将来,您应该阅读StackOverflow的Asking Guidelines。你的问题没有很好地描述你的问题,格式也不是很好,所以很难理解。

答案 1 :(得分:0)

这个有几个明显的错误:

  1. 每次for循环运行后都没有保存num。由于您没有参数调用getDigitSum(num),因此应该有错误。即使它确实有效(也就是你将getDigitSum()改为getDigitSum(num),它仍然无法工作,因为每次运行后都不会保留num。 TL:DR; 更改主要getDigitSum()中的num = getDigitSum(num)行。

  2. 您没有在此代码中输出任何内容。程序结束后,不会打印总和。因此,在更改第getDigitSum()行之后,您还应该在for循环之后print(sum)内包含main()

  3. 所以,你的代码看起来像这样:

    num = 0
    
    def main():
        name = input('Please enter your name: ')
        for letter in name:
            if letter == 'a' or letter == 'j' or letter == 's':
                num = num + 1
            if letter == 'b' or letter == 'k' or letter == 't':
                num = num + 2
            if letter == 'c' or letter == 'l' or letter == 'u':
                num = num + 3
            if letter == 'd' or letter == 'm' or letter == 'v':
                num = num + 4
            if letter == 'e' or letter == 'n' or letter == 'w':
                num = num + 5
            if letter == 'f' or letter == 'o' or letter == 'x':
                num = num + 6
            if letter == 'g' or letter == 'p' or letter == 'y':
                num = num + 7
            if letter == 'h' or letter == 'q' or letter == 'z':
                num = num + 8
            if letter == 'i' or letter == 'r':
                num = num + 9
            num = getDigitSum(num)
        print(num)
    
    def getDigitSum(num):
        sum = 0
        while num > 0:
            num, remainder = divmod(num, 10)
            sum += remainder
        return sum
    
    main()
    

    在提出问题之前,请先阅读StackOverflow的Asking Guidelines