Автоматизируйте скучный материал с Python, Глава 6 Практический проект - PullRequest
0 голосов
/ 04 мая 2020

У меня есть короткие вопросы по решению Главы 6 Практического проекта в книге «Автоматизировать скучные вещи с Python». Я должен написать функцию, которая принимает данные в виде списка списков:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
             ['Alice', 'Bob', 'Carol', 'David'],
             ['dogs', 'cats', 'moose', 'goose']]

и печатает следующую таблицу с каждым столбцом, выровненным по правому краю:

  apples Alice  dogs
 oranges   Bob  cats
cherries Carol moose
  banana David goose

Проблема в том, что мой код:

def printTable(table):
    colsWidths = [0]*len(table) #this variable will be used to store width of each column
    # I am using max function with key=len on each list in the table to find the longest string --> it's length be the length of the colum
    for i in range(len(table)):
        colsWidths[i] = len(max(table[i], key = len)) # colsWidths = [8,5,5]
    # Looping through the table to print columns
    for i in range(len(table[0])):
        for j in range(len(table)):
            print(table[j][i].rjust(colsWidths[j], " "), end = " ")
        print("\n")

печатает таблицу с чрезмерным количеством пустых строк между каждой строкой:

printTable(tableData)

  apples Alice  dogs

 oranges   Bob  cats

cherries Carol moose

  banana David goose

Я понимаю, что это как-то связано с оператором print, который записывается в конец программы, но без него все печатается. Итак, мой вопрос, есть ли способ удалить эти пустые строки из таблицы?

1 Ответ

2 голосов
/ 04 мая 2020

Заменить print("\n") на print()

print по умолчанию печатает символ новой строки, это значение по умолчанию для параметра end.

Когда вы делаете print("\n"), вы печатаете две новые строки.

...