#python #printing
#python #печать
Вопрос:
У меня есть:
for emp_id,pay_rate,job_num1,hours_worked1,job_numb2,hours_worked2,job_num3,hours_worked3,job_numb4,hours_worked4,job_numb5,hours_worked5 in master_list:
print('Job Number:', job_num1, 'Employee Id:', emp_id, 'Hours Worked:', hours_worked1, 'Hourly Rate:', pay_rate, 'Gross Pay:', int(pay_rate) * int(hours_worked1), sep ='')
Этот цикл извлекает значения из вложенного цикла.
Я получаю:
Job Number:963789Employee Id:001Hours Worked:40
Hourly Rate:15
Gross Pay:600
…и т.д.
Почему почасовая ставка и валовая оплата отображаются в новых строках? Разве они не должны отображаться как часть всей отдельной строки? Я просто ищу простое решение
Комментарии:
1. Можете ли вы показать нам
master_list
и что она содержит?2. Поскольку есть
n
вhours_worked1
,job_numb2
— я видел эти данные в предыдущем вопросе — используйтеhours_worked1.strip()
,job_numb2.strip()
в3. Да, как это глупо с моей стороны. Спасибо, чувак
Ответ №1:
Вот другой способ, который использует форматирование строки, а также некоторую логику, поскольку каждая имеющаяся у вас запись состоит из трех элементов.
s = 'Job Number:{0} Employee Id: {1} Hours Worked: {2} Hourly Rate: {3} Gross Pay: {4}'
record_size = 3 # Each record consists of three items
for record in master_list:
record = map(str.strip, record) # Removes whitespace
for i in xrange(0, len(record), record_size):
bits = record[i:i record_size]
jnum, empid, hours, rate = bits
gross_pay = int(rate) * int(hours)
print(s.format(jnum, empid, hours, rate, gross_pay), sep='')