用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格式化列表的主要内容,如果未能解决你的问题,请参考以下文章

Python笔记---DAY3:格式化输出for循环列表操作

python中请问怎么格式化输出列表

小兴趣:用python生成excel格式座位表

字符串拼接,格式化输出深浅复制

python字符串格式化啥意思

Python 标准化输出