- 您好,我花了几周时间学习python,现在正在学习文件。如果只有数字,但现在有了数字和单词,我已经使程序能够对文件中的数字求和。如何使其忽略单词并将其总和设为186?
def sum_numbers_in_file(filename):
"""reads all the numbers in a file and returns the sum of the numbers"""
filename = open(filename)
lines = filename.readlines()
result = 0
for num in lines:
result = result + int(num)
num.rstrip()
filename.close()
return result
answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)
在文件中:
1
Pango
2
Whero
3
4
10
Kikorangi
20
40
100
-3
4
5
分析解答
您可以在函数内轻松添加try-except语句,使其仅适用于数字:
def sum_numbers_in_file(filename):
"""reads all the numbers in a file and returns the sum of the numbers"""
filename = open(filename)
lines = filename.readlines()
result = 0
for num in lines:
try:
result = result + int(num)
num.rstrip()
except ValueError:
pass
filename.close()
return result
answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)
或者,您可以使用isalpha方法:
def sum_numbers_in_file(filename):
"""reads all the numbers in a file and returns the sum of the numbers"""
filename = open(filename)
lines = filename.readlines()
result = 0
for num in lines:
num = num.rstrip()
if not num.isalpha():
result = result + int(num)
filename.close()
return result
answer = sum_numbers_in_file('sum_nums_test_01.txt')
print(answer)
仅当字符串不包含符号或数字时,isalpha()才返回true,因此您可以使用它来检查字符串是否为数字。也适用于十进制数字。
请注意,它还会将符号检测为数字,因此,如果该行中有符号,它将被视为一个数字,从而可能会产生错误!