введите описание изображения здесь Я новичок в Python. Может кто-нибудь подсказать, как мне составить таблицу в формате, как указано на прилагаемой картинке?

Инструкция по форматированию:

  1. Числовая запись в каждой ячейке должна быть ровно 2-мя цифрами, с начальным 0, если необходимо.

  2. Каждая из числовых ячеек имеет ширину ровно 4 символа, в которой центрирована двухзначная запись.

Заранее спасибо за помощь!

Я написал следующий код для логики умножения:

--following code is giving output but I am not able to print it in the format as in the attached picture.

for x in range(1, 10):
        for y in range(1, 10):
            z = x * y
            print(z, end="\t")
        print() #creates the space after the loop
0
Sachin Sharma 30 Июн 2019 в 03:39

3 ответа

Лучший ответ

Вот полностью рабочее решение:

def printMultiplicationTable(size):
    # print the header row
    for x in range(-1, size): # -1 is used as a special value to print the special * character
        print("|", end=" ")
        if x == -1:
            print(" *", end=" ")
        else:
            print("0" + str(x), end=" ")
    print("|")

    # print dashes
    print("-"*(size+1)*5)

    # print the rest of the table
    for x in range(size):
        for y in range(-1, size):
            print("|", end=" ")
            if y == -1: # -1 used as special value for printing out one of the factors of multiplication
                if x == 0:
                    print("00", end=" ")
                else:
                    print("0" * (2 - math.floor(math.log(x, 10) + 1)) + str(x), end=" ")
            else:
                if x * y == 0:
                    print("00", end=" ")
                else:
                    print("0" * (2 - math.floor(math.log(x * y, 10) + 1)) + str(x * y), end=" ")
        print("|")

Немного дергается в случае с краем, где произведение x и y равно 0, но это использует math.log для вычисления количества цифр в числе и соответственно заполняет пространство.

1
tchainzzz 30 Июн 2019 в 01:01

Вы можете использовать симпатичную таблицу http://zetcode.com/python/prettytable/ или, если это форматирование не имеет именно то, что вам нужно, вы можете настроить свой собственный:

#make the definition for each row
def rowTemplate( ):
    return "| " + " | ".join( [ "{:02}" for i in range( 11 ) ]) + " |"

#define the table and header
multiplication_table = []
headers = [ i for i in range( 11 ) ]

#add the row header and separater
multiplication_table.append( rowTemplate().format( *headers ) )
multiplication_table.append( ''.join( ['-' for i in range( len( multiplication_table[0] ))] ))

#add the values and column header
for i in range( 11 ):
    row = [ i ] #add the column header
    for j in range( 11 ):
        row.append( i * j )

    #add the row to the table
    template = rowTemplate()
    multiplication_table.append( template.format( *row ) )

#print results
for row in multiplication_table:
    print( row )

0
sin tribu 30 Июн 2019 в 01:02

Попробуй это:

for i in range(0, 12):
    print(" " , ("{:02d}".format(i)), " ", "|", end='')
    for j in range(0, 12):
        print(" " , ("{:02d}".format(i*j)), " ", "|", end='')
    print("\n")
0
Pasan Chamikara 30 Июн 2019 в 00:54