Как я могу распечатать слова из двумерного массива в сетку с четными пробелами? - PullRequest
1 голос
/ 19 января 2020

Я пытаюсь распечатать двумерный массив различных длинных слов в виде сетки.

И я пытаюсь сделать интервал между словами четным.

Примечание: слова в массиве каждый раз рандомизируются.

Пример,

arr = [
   ['eighteen', 'twenty-two', 'twenty-one', 'ten', 'twenty-three'], 
   ['eleven', 'thirteen', 'four', 'three', 'twenty'], 
   ['twenty-eight', 'six', 'fourteen', 'seventeen', 'twenty-seven'], 
   ['twenty-four', 'two', 'nine', 'one', 'five'], 
   ['sixteen', 'fifteen', 'twelve', 'twenty-nine', 'seven']]

for i in range(5):
    x = arr[i]
    y = "    ".join(x)
    print(f"\t\t{y}",end="\t")
    print("\n\n")

Вывод:

    eighteen    twenty-two    twenty-one    ten    twenty-three 


    eleven    thirteen    four    three    twenty   


    twenty-eight    six    fourteen    seventeen    twenty-seven    


    twenty-four    two    nine    one    five   


    sixteen    fifteen    twelve    twenty-nine    seven

Однако Я хочу, чтобы это выглядело примерно так:

   eighteen       twenty-two       twenty-one         ten         twenty-three 


    eleven         thirteen          four            three           twenty   


 twenty-eight        six            fourteen       seventeen      twenty-seven    


  twenty-four        two              nine            one             five   


    sixteen         fifteen          twelve        twenty-nine        seven

Я бы хотел, чтобы центр каждого слова был выровнен друг с другом.

Что я могу сделать, чтобы добиться этого?

Спасибо.

1 Ответ

4 голосов
/ 19 января 2020

Вы можете сначала вычислить максимальную длину слова во всем массиве, а затем использовать спецификатор формата :^{width} , чтобы центрировать каждое слово в пределах этой доступной ширины:

width = max(len(word) for line in arr for word in line)
for line in arr:
    print(' '.join(f'{word:^{width}}' for word in line), end='\n\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...