首页 > 解决方案 > 如何在屏幕右侧进行打印?

问题描述

我的程序有什么办法可以这样打印吗?我希望它Building Remaining位于屏幕的右侧,并找到任何好方法将其放在那里。唯一的标准是Building Remaining与 相同的行A B C D

     A     B     C     D                                            Building     Remaining
  +-----+-----+-----+-----+                                         --------     ---------
1 |     |     |     |     |                                         BCH          8
  +-----+-----+-----+-----+                                         FAC          8
2 |     |     |     |     |                                         HSE          8
  +-----+-----+-----+-----+                                         SHP          8
3 |     |     |     |     |                                         HWY          8
  +-----+-----+-----+-----+
4 |     |     |     |     |
  +-----+-----+-----+-----+

这是我当前打印的样子,Building Remaining在网格的底部:

     A     B     C     D 
  +-----+-----+-----+-----+
1 |     |     |     |     |
  +-----+-----+-----+-----+
2 |     |     |     |     |
  +-----+-----+-----+-----+
3 |     |     |     |     |
  +-----+-----+-----+-----+
4 |     |     |     |     |
  +-----+-----+-----+-----+
Building     Remaining
--------     ---------
BCH          8
FAC          8
HSE          8
SHP          8
HWY          8

以下是我的程序当前的外观:

building_list = [['BCH', 8], ['FAC', 8], ['HSE', 8], ['SHP', 8], ['HWY', 8]]

basket = [ [' ', ' ', ' ', ' '],\
            [' ', ' ', ' ', ' '],\
            [' ', ' ', ' ', ' '],\
            [' ', ' ', ' ', ' '] ]


columns = ["A", "B", "C", "D"]


cols_string = ""
        
for n in range(4):
    cols_string += "    {:2}".format(columns[n])

#printing table
print("",cols_string, end="")
        
for idx, i in enumerate(basket):

    print('\n  ' + '+-----' * 4 + '+')
    print(idx + 1, end=" ")
    for j in i:
        
        print('|{:^5}'.format(j), end = '')

    print('|', end = '')

print('\n  ' + '+-----' * 4 + '+')

print('Building \t Remaining')
print('-------- \t ---------')
for x in building_list:
    print('{} \t\t {}'.format(x[0], x[1]))

标签: python-3.x

解决方案


由于这似乎是与学校相关的问题,因此我认为指出编程中的一个关键组成部分是清晰性是至关重要的。如果程序背后的逻辑不清楚,则必须重构或完全废弃该代码库,这既费时又费钱。任何渴望成为软件开发人员的人都需要先学习如何编写干净的代码。

def build_table1():
    '''Builds a 4 x 4 alphanumeric grid'''
    table1 = []

    table1_header_text = ['A', 'B', 'C', 'D', '']
    table1_header = ' {:>6}{:>6}{:>6}{:>6}{:>30}'.format(*table1_header_text)
    table1.append(table1_header)

    h_line = '+-----' * 4 + '+'
    v_line = '|'
    for i in range(1,6):
        h_row = ' {:<2}{}{:>27}'.format(i, h_line, '')
        v_row = '{:>4}{:>6}{:>6}{:>6}{:>6}{:>27}'.format(v_line, v_line, v_line, v_line, v_line, '')
        if i != 5:
            table1.append(h_row)
            table1.append(v_row)
        else:
            table1.append(h_row)
    return table1

def build_table2():
    '''Builds a list of remaining building'''
    table2 = []

    table2_header_text = ['Building', 'Remaining']
    table2_header = ' {}{:>17}'.format(*table2_header_text)
    table2.append(table2_header)

    h_row = ' -------- \t ---------'
    table2.append(h_row)

    list_data = [['BCH', 8], ['FAC', 8], ['HSE', 8], ['SHP', 8], ['HWY', 8]]
    for entry in list_data:
        row = ' {}{:>14}'.format(*entry)
        table2.append(row)
    return table2

def main():
    table1, table2 = build_table1(), build_table2()
    for _ in range(len(table1) - len(table2)):
        table2.append('')
    for j, k in zip(table1, table2):
        print('{} {}'.format(j, k))

if __name__ == '__main__':
    main()

为了完整起见,应该注意的是,理想情况下,上面的代码应该推广到除 OP 提供的数据输入之外的其他数据输入,但由于这是一项学校作业,我将把它留给 OP 来做; )


推荐阅读