简体   繁体   English

修复字符串格式的正确 alignment

[英]Fixing right alignment of string formatting

I'm trying to align the output of the list like shown:我正在尝试对齐列表的 output,如下所示:

在此处输入图像描述

But it keeps coming out like this:但它总是像这样出现:

在此处输入图像描述

My code for all of this is:我所有这些的代码是:

subject_amount = int(input("\nHow many subject do you want to enrol? "))

class Subject:
def __init__(self, subject_code, credit_point):
    self.subject_code = subject_code
    self.credit_point = credit_point

subjects = []

for i in range(1, (subject_amount + 1)):
subject_code = input("\nEnter subject " + str(i) + ": ")
credit_point = int(input("Enter subject " + str(i) + " credit point: "))
subject = Subject(subject_code, credit_point)
subjects.append(subject)

print ("\nSelected subjects: ")

i, total = 0, 0

print("{0:<} {1:>11}".format("Subject: ", "CP"))

while(i < subject_amount):
print("{0:<} {1:14}".format(subjects[i].subject_code, subjects[i].credit_point))
total += subjects[i].credit_point
i = i + 1

print("{0:<} {1:>11}".format("Total cp: ", total))

I've tried changing the values for the spacing as well with no results.我也尝试更改间距的值,但没有结果。

Any feedback on the rest of my code is also greatly appreciated.对我的代码的 rest 的任何反馈也非常感谢。

You can't do this using plain Python formatting because the amount of padding depends on both strings.您不能使用普通的 Python 格式来执行此操作,因为填充量取决于两个字符串。 Try defining a function such as:尝试定义一个 function 例如:

def format_justified(left, right, total):
    padding = total - len(left)
    return "{{0}}{{1:>{}}}".format(padding).format(left, right)

then simply use:然后只需使用:

print(format_justified("Total cp:", total, 25))

where 25 is the total line width you want.其中 25 是您想要的总线宽。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM