Как разнести строку на основе значения - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь разнести содержимое в одном операторе print() на указанную ширину.Я выложу только соответствующий код:

def print_formatted(number):
    # your code goes here
    width = len(convert(number, 2))

    for i in range(number):
        print(
            str(i + 1) + width + 
            str(convert(i + 1, 8)) + width + 
            str(convert(i + 1, 16)) + width + 
            str((convert(i + 1, 2)))
            )

Я знаю, что конкатенация ...+ width + не работает.Я положил это туда, чтобы визуализировать то, что я моя цель.Я прочитал из документов, что format() - это функция, с которой я должен работать, но я не видел реализации, аналогичной той, что я пытаюсь сделать здесь.

Успешный вывод:

    1     1     1     1
    2     2     2    10
    3     3     3    11
    4     4     4   100
    5     5     5   101
    6     6     6   110
    7     7     7   111
    8    10     8  1000
    9    11     9  1001
   10    12     A  1010
   11    13     B  1011
   12    14     C  1100
   13    15     D  1101
   14    16     E  1110
   15    17     F  1111
   16    20    10 10000
   17    21    11 10001    

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Вы можете использовать параметры форматирования для этого.К сожалению, вы должны вручную указать максимальную ширину, потому что print не может определить, какая самая большая вещь будет напечатана позже:

list_of_tuples = list(zip(
    range(10),
    range(0, 20, 2),
    range(0, 30, 3),
    [10**i for i in range(10)]
    ))

width = 10 # Has to be specified manually, unfortuntately.
for tup in list_of_tuples:
    print("\t".join(f"{number:>{width}}" for number in tup))

     0           0           0           1
     1           2           3          10
     2           4           6         100
     3           6           9        1000
     4           8          12       10000
     5          10          15      100000
     6          12          18     1000000
     7          14          21    10000000
     8          16          24   100000000
     9          18          27  1000000000
1 голос
/ 21 сентября 2019

Как это?

print(
    str(i + 1)+"{}".format("\t")+ 
    str(convert(i + 1, 8)) +"{}".format("\t")+
    str(convert(i + 1, 16)) +"{}".format("\t")+ 
    str((convert(i + 1, 2)))
     )


...