我有一个文本文件,其中包含每个性别的产品的好坏数据
Male 100 120
Female 110 150
如何计算此文本文件中两种性别的总数,以便打印出480
这是我尝试编码:
def total():
myFile = open("product.txt", "r")
for result in myFile:
r = result.split()
print(r[1]+r[2])
total()
它打印出列的内容,但不添加它们
答案 0 :(得分:1)
split
的结果是一串字符串,而不是整数
"添加"带有+
的两个字符串连接字符串。
示例交互有足够的线索供您解决:
>>> s = "123 456"
>>> ss = s.split()
>>> ss
['123', '456']
>>> ss[0] + ss[1]
'123456'
>>> int(ss[0])
123
>>> int(ss[1])
456
>>> int(ss[0]) + int(ss[1])
579
当你得到意想不到的结果时,打开翻译并以交互方式查看事物通常会提供大量线索。
答案 1 :(得分:1)
您需要将每个拆分文本条目转换为整数,并保持运行总计如下:
def total():
the_total = 0
with open("product.txt", "r") as myFile:
for result in myFile:
r = result.split()
the_total += int(r[1]) + int(r[2])
return the_total
print(total())
这会显示:
480
使用with
会自动为您关闭文件。
答案 2 :(得分:1)
还有一个
string(26) "myemail@email.com"
适用于每行中可能包含的任意数量的列
e.g。有四列
def total():
with open('product.txt') as f:
nums = (int(el) for r in f for el in r.split()[1:])
return sum(nums)
print(total())
产生
Male 111 222 333 444
Female 666 777 888 999
答案 3 :(得分:0)
正如 jonrsharpe 的评论中所述,您没有添加以前的值。
由于您要添加所有内容,请跟踪以前的值并添加新行(全部转换为整数)。将您的代码更改为:
def total():
t = 0
with open("product.txt", "r") as myFile:
for result in myFile:
r = result.split()
t += int(r[1]) + int(r[2])
return t
print(total()) # 480
由于这个被选中,我正在编辑包括文件关闭。 由 Martin Evans提及:
使用with将自动为您关闭文件。
答案 4 :(得分:0)
>>> def total():
myfile = open("/home/prashant/Desktop/product.txt" , "r")
for res in myfile:
r = res.split()
print (int(r[0])+int(r[1]))
str未转换为int,这是你的问题