我目前有以下代码生成如下所示的输出:
MENU = [["Hawaiian", 8.50], ["Pepperoni", 8.50], ["Veg Trio", 8.50], ["Simply Cheese", 8.50], ["Meat Lovers", 8.50], ["Ham & Cheese", 8.50], ["BBQ Italian Sausage", 8.50],
["Loaded Supreme", 13.50], ["Chicken Fajita", 13.50], ["Apricot Chicken", 13.50], ["Garlic Prawn", 13.50], ["Chicken Cranberry", 13.50]]
print("\nWe sell the following pizzas.")
for i, pizza in enumerate(MENU):
print("{}: {}: ${:.2f}".format(str(i+1).zfill(2), MENU[i][0], MENU[i][1]))
输出:
如何使所有价格都在它们自己的“列”中并左对齐?我已经在此处发布的类似问题的答案中尝试了一些方法,但我无法实现我想要实现的目标。
我已经尝试使用我在此处找到的方法,但他们所做的只是将冒号和价格之间的差距扩大每个单独列的相同数量,当然这不会使它们全部成行上。
我只是在学习,所以非常感谢任何帮助!
最佳答案
您可以查找名称最长的 Pizza,然后在名称和价格之间为较短的名称填充空格:
MENU = [["Hawaiian", 8.50], ["Pepperoni", 8.50], ["Veg Trio", 8.50], ["Simply Cheese", 8.50], ["Meat Lovers", 8.50], ["Ham & Cheese", 8.50], ["BBQ Italian Sausage", 8.50],
["Loaded Supreme", 13.50], ["Chicken Fajita", 13.50], ["Apricot Chicken", 13.50], ["Garlic Prawn", 13.50], ["Chicken Cranberry", 13.50]]
# Get a list of the lengths of the pizza names
menu_name_lengths = [len(k[0]) for k in MENU]
# Get the length of the longest name
max_length = max(menu_name_lengths)
# (max_length-len(pizza[0])) gives the number of spaces to fill in the gap
for i, pizza in enumerate(MENU):
print("{} {}:{} ${:.2f}".format(str(i+1).zfill(2), pizza[0], " "*(max_length-len(pizza[0])), pizza[1]))
打印出来:
01 Hawaiian: $8.50
02 Pepperoni: $8.50
03 Veg Trio: $8.50
04 Simply Cheese: $8.50
05 Meat Lovers: $8.50
06 Ham & Cheese: $8.50
07 BBQ Italian Sausage: $8.50
08 Loaded Supreme: $13.50
09 Chicken Fajita: $13.50
10 Apricot Chicken: $13.50
11 Garlic Prawn: $13.50
12 Chicken Cranberry: $13.50
关于python - 如何左对齐和分隔此打印语句中某些值的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46192109/