python-3.x - 如何在屏幕右侧进行打印?
问题描述
我的程序有什么办法可以这样打印吗?我希望它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]))
解决方案
由于这似乎是与学校相关的问题,因此我认为指出编程中的一个关键组成部分是清晰性是至关重要的。如果程序背后的逻辑不清楚,则必须重构或完全废弃该代码库,这既费时又费钱。任何渴望成为软件开发人员的人都需要先学习如何编写干净的代码。
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 来做; )
推荐阅读
- html - div中的垂直中心图像
- c# - 将逗号分隔的列表作为数字字符串传递,以使用 Npgsql 在 C# 中作为 PostgreSQL db 的整数列表进行查询
- java - JLabel setLocation 和 setBounds 方法不起作用
- angular - 错误在 Project@0.0.0 ng-high-memory 脚本中失败由于此问题,我无法创建构建,为什么会出现此错误?
- hyperledger-fabric - 迁移到 2.0 生命周期,Hyperledger Fabric EVM
- selenium - 用于 Kali Linux 的 Geckodriver
- c++ - 如何在框架内使用 wxChartDir 在 wxWidgets 应用程序中绘制等高线图?
- sql - 需要 SQL 帮助来创建视图。他们是 deptCode 附近的一个错误,说“不明确的列名 'deptCode'”。
- flutter - MaterialApp builder错误:未找到覆盖小部件
- reactjs - 即使验证失败,用于表单验证成功的代码也会运行