首页 > 解决方案 > 如何列出用户在python中输入的所有键和值

问题描述

对于以下问题,我被困在作业上:

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

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

[等等...]

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

好的,印刷成绩!

学生成绩

学生1 A

学生2D

学生3 B

学生4 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))

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

标签: python

解决方案


这里有几个问题,一个是@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))

推荐阅读