修复字符串格式的右对齐
Fixing right alignment of string formatting
我正在尝试对齐列表的输出,如下所示:
但它总是这样出现:
我的代码是:
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))
我也试过更改间距的值,但没有结果。
对于我的其余代码的任何反馈也非常感谢。
您不能使用纯 Python 格式来执行此操作,因为填充量取决于两个字符串。尝试定义一个函数,例如:
def format_justified(left, right, total):
padding = total - len(left)
return "{{0}}{{1:>{}}}".format(padding).format(left, right)
然后只需使用:
print(format_justified("Total cp:", total, 25))
其中 25 是您想要的总线宽。
我正在尝试对齐列表的输出,如下所示:
但它总是这样出现:
我的代码是:
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))
我也试过更改间距的值,但没有结果。
对于我的其余代码的任何反馈也非常感谢。
您不能使用纯 Python 格式来执行此操作,因为填充量取决于两个字符串。尝试定义一个函数,例如:
def format_justified(left, right, total):
padding = total - len(left)
return "{{0}}{{1:>{}}}".format(padding).format(left, right)
然后只需使用:
print(format_justified("Total cp:", total, 25))
其中 25 是您想要的总线宽。