gpt4 book ai didi

python - 如何将文本中不同行的不同数字相乘

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:07 25 4
gpt4 key购买 nike

我有一个像这样的文本文件:

month /name/ number/ price
1 John 100 120.00
1 Sean 90 125.00
1 Laura 150 100.00
1 Joseph 95 140.00
1 Pam 91 105.00
2 John 110 120.00
2 Sean 98 100.00
2 Laura 100 100.00
2 Joseph 89 150.00
2 Pam 100 100.00
3 John 100 121.00
3 Sean 90 120.00
3 Laura 97 100.00
3 Joseph 120 110.00
3 Pam 101 100.00

我需要获取特定人(例如 Pam)每月的收入以及 1,2 和 3 个月的总收入(数量*价格)。我有下面的代码和下面的输出。但我不知道如何获得总收入,有人可以给我一些建议或想法吗?

#This is the code I use
f = input('Enter The File Name:')
sales_data = open("sales.txt",'r')
lines = sales_data.readlines()
m = input('Enter the Manager Name:')
print('Monthly Sales Report for' +' ' + m)
for line in lines:
line = line.split()
tr = (float(line[2]) * float(line[3]))
if m in line:
print(line[0] +' ' + line[2] + ' ' + line[3] +' ' + str(tr))
#This is the output I got

Enter the Manager Name: Pam
Monthly Sales Report for Pam
1 91 105.00 9555.0
2 100 100.00 10000.0
3 101 100.00 10100.0

最佳答案

解决问题的一种可能方法是将所有每月值存储在特定经理的字典中:

file_name = input('Enter The File Name: ')

manager_summary = {'1':0.0, '2':0.0, '3':0.0}

with open (file_name, 'r') as fin:
lines = fin.readlines()
manager = input('Enter the Manager Name: ')
print('Monthly Sales Report for' +' ' + manager)
for line in lines:
line = line.split()
if manager in line:
manager_summary[line[0]] += float(line[-2])*float(line[-1])

manager_total = 0.0
for key, value in manager_summary.items():
manager_total += value
print(manager_total)

代码立即读取输入文件,循环遍历所有行以搜索目标经理,并将该经理的累计月销售额存储在字典中。然后,通过添加字典中存储的每个月的累积值来计算 3 个月期间的总收入。

与您的原始代码相比,有一些值得注意的更改:

  • 在您的代码中,您要求用户提供文件名,但随后您将其硬编码到下一行 - 此处您使用该输入文件名。
  • 此代码不是使用 open 打开文件,而是使用 with open - with open 是一个上下文管理器,当需要关闭时,它会自动关闭文件。你的程序中缺少你的内容。
  • 累积数据存储在字典中,键为月份数字。这样一来,每位经理每月可以拥有多个条目。
  • 变量名更有意义。一般不建议使用fm等变量,它会使程序更容易出现错误并且可读性较差。这里使用的那些有点长,你总是可以想出一些介于两者之间的东西。

关于python - 如何将文本中不同行的不同数字相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58326042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com