使用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研究并没有对我有太大帮助,因为我还不了解很多代码。任何回复都会有帮助。

cc0734 回答:使用Python格式化列表

如果pandas对您没问题:

import pandas as pd
df = pd.DataFrame(grade_list,columns=['Grade Percentage','Letter Grade'])
print(list_title)
print(df)
,

使用建议的代码,我更新的格式如下:

select dbo.Sum_Euler(10)

这是我的新输出:

2.718281801142

感谢您的帮助!我的代码现在可以正常工作了,我不必为这个小小的格式化错误而着迷。

,

如果您不想使用任何其他库,则有一个非常简单的解决方案。

像这样更新您的打印语句:

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:]))
本文链接:https://www.f2er.com/3162608.html

大家都在问