如何使用字典为每个学生存储多个条目

2024-05-14 18:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是问题陈述:

有“n”个学生的记录,每个记录都有学生的名字、数学、物理和化学的百分比分数。用户输入一个整数“n”,后跟“n”学生的姓名和标记。我必须将记录保存为字典数据类型。然后,用户输入一个学生的姓名,您需要打印该学生获得的平均百分比分数,精确到小数点后两位。 到目前为止我所做的:

num_students = int(raw_input("Please enter number of students:"))
print "you entered %s students" %num_students
student_info = {}
student_data = ['studentname', 'mathmarks', 'physicsmarks', 'chemistrymarks']
for i in range(0,num_students):
    for entry in student_data:
        student_info[entry] = raw_input(entry )
print student_info
print"please enter student name"
name = raw_input("student name")
if student_info['studentname'] == name:
    print "Average student marks:", (int(student_info['mathmarks']) + int(student_info['physicsmarks']) + int(student_info['chemistrymarks']))/3
else:
    print"please enter valid name"

此代码在num_students=1时有效,但如果num_students>;1,则代码失败。

我无法把每个学生的词条都存进字典里。

我对python很陌生,如果有人能帮我做这个我会很高兴的。


Tags: nameinfoinputraw记录student学生num
3条回答
  #youcan use print stmts. acording to your problem
 n = raw_input()
    grades = []
    for entry in range(int(n)):
        grades.append([i for i in raw_input().split()])
    query = raw_input()

    # Find list where first item matches name in query and
    # assign grades to queryResult
    queryResult = [x[1:] for x in grades if x[0] == query]

    total = 0
    scores = 0

for x in queryResult:
    for y in x:
        total += float(y)
        scores += 1
print "%.2f" % (float(total/scores))

实际上,您需要创建一个名称为值、另一个dict为键的嵌套字典,嵌套dict可能看起来像:

{
    'anmol': {'chemistrymarks': 3, 'physicsmarks': 2, 'mathmarks': 1},
    'uppal': {'chemistrymarks': 6, 'physicsmarks': 5, 'mathmarks': 4}
}

因此,您需要添加以下行来创建嵌套字典。

num_students = int(raw_input("Please enter number of students:"))
print "you entered %s students" %num_students
student_info = {}
student_data = ['Math marks : ', 'Physics marks : ', 'Chemistry marks : ']
for i in range(0,num_students):
    student_name = raw_input("Name :")
    student_info[student_name] = {}
    for entry in student_data:
        student_info[student_name][entry] = int(raw_input(entry)) #storing the marks entered as integers to perform arithmetic operations later on.
#print student_info
print"Please enter student name ?"
name = raw_input("Student name : ")
if name in student_info.keys():
    print "Average student marks : ", str(sum(student_info[name].values())/3.0)
else:
    print"please enter valid name"
#Another way
num_of_student = int(raw_input())
dir_student = {}

for i in range(0,num_of_student):
    student_info = raw_input()
    name = student_info.split()
    dir_student[name[0]] = [float(name[1]),float(name[2]),float(name[3])]

find_name = raw_input()
if dir_student.has_key(find_name):
    print "{0:.2f}".format(sum(dir_student[find_name])/3.0)

相关问题 更多 >

    热门问题