用Python格式化列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python格式化列表相关的知识,希望对你有一定的参考价值。
我对编码非常陌生,我正在尝试创建一个项目,其中列出了成绩百分比及其等价字母。我在格式化它时看起来很麻烦。这是我目前拥有的大多数代码:
(编辑以显示更多数据)
def main():
grade_list = create_grades()
print_list(grade_list)
def create_grades():
grade_list = []
for student in range(35):
percentage_grade = round(random.uniform(50, 100), 2)
letter_grade = get_grade(percentage_grade)
dumb_tuple = (percentage_grade, letter_grade)
grade_list.append(dumb_tuple)
list_title = "Grades for Class With a Cool Name"
def print_list(grade_list):
print(list_title)
print(":20".format("Grade Percentage"), "Letter Grade")
for student in grade_list:
print(':10'.format(student[0]), ":>17".format(student[1]))
这是结果输出:
Grades for Class With a Cool Name
Grade Percentage Letter Grade
93.44 A
99.58 A
67.37 D+
79.07 C+
64.75 D
79.42 C+
97.2 A
73.37 C
86.33 B
83.56 B
98.89 A
68.74 D+
76.03 C
63.75 D
77.43 C+
51.32 F
53.18 F
61.56 D-
65.4 D
94.48 A
85.96 B
92.62 A-
90.51 A-
91.7 A-
50.76 F
67.93 D+
52.98 F
81.85 B-
60.91 D-
84.71 B
63.74 D
61.64 D-
74.21 C
97.99 A
72.95 C-
我现在要完成的工作是使字母对齐,而不是在值加正或负时使它们变成锯齿状。我知道这似乎是一个相对简单的问题,但是我的Google研究并没有对我有太大帮助,因为我还不了解很多代码。任何回复都有帮助。
答案
如果您不想使用任何其他库,则有一个非常简单的解决方案。
像这样更新您的打印语句:
print(':10'.format(student[0]), ":>17".format(student[1][0]), ":<1".format(student[1][1:]))
您将得到类似的输出:
Grades for Class With a Cool Name
Grade Percentage Letter Grade
jeff A +
sally A
tim B -
这通过将您的student[1]
值(等级)分成两部分来工作。首先,student[1][0]
得到字母,我们以与您相同的间距对它进行对齐。接下来,如果存在student[1][1:]
,我们将删除正负号。这是一个从索引1到末尾的切片。如果索引1为非包含端,则此分片为“空”,因此什么也没有发生。
编辑:要删除空格,可以将项目放在一个语句中,并用逗号分隔参数:
print(':10'.format(student[0]), ":>17:<1".format(student[1][0], student[1][1:]))
另一答案
如果pandas
可以接受您:
import pandas as pd
df = pd.DataFrame(grade_list, columns=['Grade Percentage', 'Letter Grade'])
print(list_title)
print(df)
另一答案
使用建议的代码,我更新的格式如下:
def print_list(grade_list):
print(list_title)
print(":20".format("Grade Percentage"), "Letter Grade")
for student in grade_list:
print(':10'.format(student[0]), ":>17:>1".format(student[1][0], student[1][1:]))
这是我的新输出:
Grades for Class With a Cool Name
Grade Percentage Letter Grade
98.99 A
65.17 D
68.71 D+
78.15 C+
85.97 B
91.48 A-
57.61 F
73.5 C
70.06 C-
75.54 C
50.14 F
59.78 F
80.49 B-
67.5 D+
90.99 A-
59.28 F
50.37 F
52.03 F
60.42 D-
60.38 D-
81.54 B-
92.49 A-
55.96 F
73.52 C
85.03 B
80.36 B-
80.4 B-
71.8 C-
81.64 B-
58.89 F
67.06 D+
79.22 C+
50.72 F
64.91 D
84.82 B
感谢您的帮助!我的代码现在可以正常工作了,我不必为这个小小的格式化错误而着迷。
以上是关于用Python格式化列表的主要内容,如果未能解决你的问题,请参考以下文章