функция печати на python, использующая разрыв строки там, где не предполагается, в цикле for

#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() в print .

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='')