Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中拆分数字并添加它们_Python - Fatal编程技术网

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

如何在python中拆分数字并添加它们,python,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

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

到目前为止,我的代码是:

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()
getDigitSum是一个函数,它接受一个参数num,并使用该参数进行计算并返回一个数字

您不仅没有向它传递任何参数,也没有将其返回值存储在任何位置

将getDigitSum替换为printgetDigitSumnum之类的内容

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


将来,您应该阅读StackOverflow的。您的问题没有很好地描述您的问题,格式也不太好,因此很难理解。

此问题有几个明显的错误:

在每次for循环运行之后,都不会保存num。因为调用getDigitSumnum时没有参数,所以应该有一个错误。即使它可以工作,也就是您将getDigitSum更改为getDigitSumnum,它仍然无法工作,因为每次运行后都不会保留num。TL:DR;将main中的getDigitSum行更改为num=getDigitSumnum

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

因此,您的代码如下所示:

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的内容