因此,我用于工资问题的代码似乎缺少某些内容,因此它会计算所有用户。我不确定这是否是压痕问题。我得到的是最后一个用户,但不是前2个。
file_name = input("Enter the file name: ")
print('\n%-15s%-10s%-10s' % ('Name', 'Hours', 'Total Pay'))
for line in open(file_name):
line = line.strip()
if line != '':
(name, wage, hours) = line.split()
wage = float(wage)
hours = float(hours)
pay = wage * hours
print('%-15s%-10d%-10.2f' %(name,hours,pay))
Lambert 34 10.50
Osborne 22 6.25
Giacometti 5 100.70
我的输出:
Name Hours Total Pay
Giacometti 100 503.50
2条答案
按热度按时间q9rjltbz1#
是的,这是一个缩进问题:
print
语句必须“在”内部for
环正如您所看到的,print语句只在for
,使用变量的值name
,hours
,pay
在最后一次通过循环时计算。编辑:更准确地说,是
print
语句应该在if
内部声明for
环如果一行是空的,您不想打印任何内容,当然也不想再次打印上一行(使用上一次迭代中的值,您会这样做)。68de4m5k2#
你的
print()
没有正确缩进。应该是:在for循环之前的方式是,获取文件中当前行中员工的工资、小时数、姓名和工资,然后再次执行循环以替换旧值。循环完成后,它将打印您的变量,其中包含最后一名员工的姓名、工资和工时。
编辑:顺便说一句,你的打印功能应该在
if
因为如果它只是在for
当你读到一个空行时,它会再次打印最后一个处理过的员工的姓名、工作时间和工资。