如何列出用户在python中输入的所有键和值

时间:2018-12-31 09:10:14

标签: python

我被困在作业上的问题如下:

  

创建一个程序,将学生的名字与他的班级指南相匹配。用户应该能够输入所需数量的学生,然后获得所有学生姓名和成绩的打印输出。输出应如下所示:

     

请给我学生姓名(问退出):[输入]
  请给我他们的成绩(q退出):[输入]

     

[依此类推...]

     

请给我学生姓名(q退出):> q

     

好的,打印成绩!

     

学生成绩

     

Student1 A

     

Student2 D

     

Student3 B

     

Student4 A

这是我到目前为止所做的:

def my_dict():

    while True:

        name=input("Please give me the name of the student (q to quit):")
        grade=input("Please give me their grade:")

        my_dict[name]=grade

        if name=='q':
            break

print("Ok, printing grades!")

print("Student\t\tGrade")

for name, grade in my_dict.items():

        print("name: {}, grade: {}'.format(name, grade))

我知道这是不对的,但我不知道如何将名称和等级配对以及如何从用户输入中打印出所有键和值。如果您愿意帮忙,请告诉我!非常感谢

1 个答案:

答案 0 :(得分:2)

这里有几个问题,一个是注释中提到的@khelwood语法错误,另一个是my_dict既是函数又是(显然)是未定义的字典。

在添加到字典之前,我也break,否则,您将以'q'作为字典中的名称(并且用户必须输入学生“ q”的等级)。

您可以在函数中定义本地字典,然后将其返回,例如:

def get_dict_from_user():
    user_input = {}
    while True:
        name = input("Please give me the name of the student (q to quit):")
        if name == 'q':
            break

        # It is not clear if 'grade' means a letter grade (A-F) or a numerical grade (0-100).
        # If you want numerical grade it may be better to do convert to int so you can do 
        # calculations, such as finding the average
        grade = input("Please give me their grade:")
        user_input[name] = grade

    return user_input

grades_dict = get_dict_from_user()
print("Ok, printing grades!")
print("Student\t\tGrade")

for name, grade in grades_dict.items():
    print('name: {}, grade: {}'.format(name, grade))