我有这个字符串,我想计算总和,但是没有显示正确的答案,它显示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))
使用list comprehension和sum()的最佳方式(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()]))
这里您有可能的解决方案。现在结果是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))
这是因为您要分别转换每个数字,所以您要做的是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。