计算python中给定字符串的数字总和

问题描述 投票:0回答:3

我有这个字符串,我想计算总和,但是没有显示正确的答案,它显示51

sumAndAverage = "English = 78 Science = 83 Math = 68 History = 65"

def sum_digits_string(str1):
    sum_digit = 0
    for x in str1:
        if x.isdigit():
            z = int(x)
            sum_digit = sum_digit + z

    return sum_digit 

print(sum_digits_string(sumAndAverage))
python sum digits
3个回答
0
投票

使用list comprehensionsum()的最佳方式(Pythonic)。试试这个:

str1 = "English = 78 Science = 83 Math = 68 History = 65"
print(sum([int(x) for x in str1 if x.isdigit()]))

如果要计算字符串中数字的总和:

str1 = "English = 78 Science = 83 Math = 68 History = 65"
print(sum([int(x) for x in sumAndAverage.split() if x.isdigit()]))

0
投票

这里您有可能的解决方案。现在结果是229(78 + 83 + 65)。

sumAndAverage = "English = 78 Science = 83 Math = 68 History = 65"

def sum_digits_string(str1):
    sum_digit = 0
    num = ""
    for x in str1:
        if x.isdigit():
            num += x
        else:
            if num != "":
                z = int(num)
                sum_digit += z
                num = ""
    return sum_digit 

print(sum_digits_string(sumAndAverage))

0
投票

这是因为您要分别转换每个数字,所以您要做的是7 + 8 + 8 + 3 + 6 + 8 + 6 + 5,这实际上是51。在这里要做的就是拆分字符串并转换整个数字,尝试这样的事情:

sumAndAverage = "English = 78 Science = 83 Math = 68 History = 65"

def sum_digits_string(str1):
    sum_digit = 0

    for x in str1.split(" "):
        if x.isdigit():
            z = int(x)
            sum_digit = sum_digit + z

    return sum_digit 

print(sum_digits_string(sumAndAverage))

正在处理赠品294。

© www.soinside.com 2019 - 2024. All rights reserved.