【发布时间】:2019-08-06 20:17:01
【问题描述】:
如何在 Python 3 中将两个不同的输出并排对齐?
输入:
def Pokemon_Output(user_pkmn):
print("ID#",pkmn[user_pkmn][0])
print("Name:",pkmn[user_pkmn][1])
print("Type 1:",pkmn[user_pkmn][2])`
print("Type 2:",pkmn[user_pkmn][3])
print("Total:",pkmn[user_pkmn][4])
print("HP:",pkmn[user_pkmn][5])
print("Attack:",pkmn[user_pkmn][6])
print("Defense:",pkmn[user_pkmn][7])
print("Sp. Atk:",pkmn[user_pkmn][8])
print("Sp. Def:",pkmn[user_pkmn][9])
print("Speed:",pkmn[user_pkmn][10])
print("Legendary:",pkmn[user_pkmn][12])
def Second_Pokemon_Output(second_user_pkmn):
print("ID#",pkmn[second_user_pkmn][0])
print("Name:",pkmn[second_user_pkmn][1])
print("Type 1:",pkmn[second_user_pkmn][2])
print("Type 2:",pkmn[second_user_pkmn][3])
print("Total:",pkmn[second_user_pkmn][4])
print("HP:",pkmn[second_user_pkmn][5])
print("Attack:",pkmn[second_user_pkmn][6])
print("Defense:",pkmn[second_user_pkmn][7])
print("Sp. Atk:",pkmn[second_user_pkmn][8])
print("Sp. Def:",pkmn[second_user_pkmn][9])
print("Speed:",pkmn[second_user_pkmn][10])
print("Legendary:",pkmn[second_user_pkmn][12])
当前输出:
ID# 4
Name: Charmander
Type 1: Fire
Type 2:
Total: 309
HP: 39
Attack: 52
Defense: 43
Sp. Atk: 60
Sp. Def: 50
Speed: 65
Legendary: Not Legendary
ID# 1
Name: Bulbasaur
Type 1: Grass
Type 2: Poison
Total: 318
HP: 45
Attack: 49
Defense: 49
Sp. Atk: 65
Sp. Def: 65
Speed: 45
Legendary: Not Legendary
我的想法是将两个输出并排对齐,而不管输入是什么。像这样的:
ID# 4 ID# 1
Name: Charmander Name: Bulbasaur
Type 1: Fire Type 1: Grass
Type 2: Type 2: Poison
Total: 309 Total: 318
HP: 39 HP: 45
Attack: 52 Attack: 49
Defense: 43 Defense: 49
Sp. Atk: 60 Sp. Atk: 65
Sp. Def: 50 Sp. Def: 65
Speed: 65 Speed: 45
Legendary: Not Legendary Legendary: Not Legendary
在那之后我打算做一些分析比较两个口袋妖怪之间的统计数据,但我真正想做的只是调整所有内容。感谢您的帮助!
【问题讨论】:
-
意见角:一旦您的输出需求变得比“在连续行上打印文本”更复杂,就该切换到 GUI。最好使用带有两个文本区域的窗口,而不是试图说服控制台打印多列。
-
format函数提供了你所需要的一切。你的问题可能是重复的。搜索“格式化输出”应该会给 stackoverflow 带来很多命中。 -
@Kevin Neighbor 意见角:我可以想象,即使对于一些简单的表格,控制台输出仍然可以。与空间填充的最小长度变量一起使用的格式或 f 字符串可以。我发现所有这些打印语句的两个独立函数更值得商榷。以两个数据框为参数的一个将是(imo)正确方向的第一步
-
@SpghttCd 正如你所描述的,我有大量格式化的控制台输出......一个示例复杂的基本格式字符串是
"%-9s %-{}s %8.4f%% (%{}i/%{}i)",在计算变量字段的适当长度后传递给.format,然后到%以填充数据。 Boom,自动调整大小的可变宽度的表格,在一个重复使用十几次的函数中需要大约 15 LOC。我可以为该工具编写一个 GUI 吗?当然可以,但考虑到大部分输出都出现在错误跟踪器中,它只支持等宽文本:它生成的表格可以直接复制粘贴。