Python 如何通过CMD向用户输入的字典添加新的详细信息
我是Python编程新手,我创建了一个方法,通过cmd的用户输入将新的学生名字和新的分数输入到现有的字典中,但我发现很难排序。我该怎么处理呢 我已经能够正确地编写其他方法的代码。只有上述方法在运行时给出错误:Python 如何通过CMD向用户输入的字典添加新的详细信息,python,Python,我是Python编程新手,我创建了一个方法,通过cmd的用户输入将新的学生名字和新的分数输入到现有的字典中,但我发现很难排序。我该怎么处理呢 我已经能够正确地编写其他方法的代码。只有上述方法在运行时给出错误: StudDict={'James':[70,75,95,], 'Adams':[75,90,73], 'Benjamin':[80,79,85]} #The below is where im having problems. def AddStudent(
StudDict={'James':[70,75,95,],
'Adams':[75,90,73],
'Benjamin':[80,79,85]}
#The below is where im having problems.
def AddStudent(): #This method adds new student and grade to the existing Student dictionarydictionary
StudToAdd= input('ENTER STUDENT NAME TO BE ADDED: ')
GradesToAdd=input("ENTER NEW STUDENT'S GRADE: ")
StudDict[StudToAdd].append(GradesToAdd)
print(StudDict)
我希望能够向我已经创建的现有学生词典中添加新的学生(键)和成绩(值),并在词典中找到新添加的详细信息。尝试使用
defaultdict
,因为它似乎非常适合您要做的事情:
从集合导入defaultdict
StudDict=defaultdict(列表)
#(可选)向对象提供现有数据:
#StudDict=defaultdict(列表,{existing_dict_with_data})
def add_student():
...
StudDict[StudToAdd].append(GradesToAdd)
有关更多详细信息,请参见此处的文档:
代码不起作用的原因是新的学生词典没有定义为列表;因此,您不能追加 有两种方法可以做到这一点,但是保持与现在相同的逻辑,您需要添加一些额外的步骤
>>> students = {'James': [70, 75, 95], 'Adams': [75, 90, 73], 'Benjamin': [80, 79, 85]}
>>> def add_student ():
... new_student = input ('Enter student name to be added:' )
... grades = input ('Enter new student\'s grade: ')
... grades = grades.split (',') # Split grades by comma
... grades = [int (grade.strip (' ')) for grade in grades] # Strip space between each grade & convert to integers
... students [new_student] = grades # Assign new student with grades
...
>>> add_student()
Enter student name to be added:>? John
Enter new student's grade: >? 82, 79, 77
>>> students
{'Benjamin': [80, 79, 85], 'Adams': [75, 90, 73], 'James': [70, 75, 95], 'John': [82, 79, 77]}
根据评论更新答案要删除学生分数,您需要确保数据库中存在该名称和分数
>>> def remove_scores():
... name = input('Enter student name whose scores would be removed: ')
... score = int (input('Enter score to be removed: '))
... # Checking both student name and score exists in database
... if name in students and score in students [name]:
... score_index = students [name].index (score) # Obtain the index location of the score
... del students [name][score_index]
... print (students)
... else:
... print('Student %s and/or %s score is not in our database.' % (name, score))
...
首先,让我们为要删除的Adams添加一个额外的分数'79'
>>> students ['Adams'].append (79)
>>> students
{'Benjamin': [80, 79, 85], 'Adams': [75, 90, 73, 79], 'James': [70, 75, 97]}
接下来,测试name和score条件
>>> remove_scores()
Enter student name whose scores would be removed: >? Larry
Enter score to be removed: >? 59
Student Larry and/or 59 score is not in our database.
>>> remove_scores()
Enter student name whose scores would be removed: >? Adams
Enter score to be removed: >? 77
Student Adams and/or 77 score is not in our database.
一旦我们对结果满意,让我们删除并查看结果
>>> remove_scores()
Enter student name whose scores would be removed: >? Adams
Enter score to be removed: >? 79
{'Benjamin': [80, 79, 85], 'Adams': [75, 90, 73], 'James': [70, 75, 97]}
看看这可能会有帮助请尝试通过这种方式将数据设置到字典StudDict[StudToAdd]=GradesToAddit最好遵循PEP 8命名约定,因为函数+变量使用小写字母,必要时用下划线分隔-谢谢大家,所有建议都有效,我很感激这个社区登录:Admin1输入密码:Pass123@welcome******************************************************[.]-打印学生词典[0]-添加新学生[1]-输入成绩[2]-删除学生[3]-学生平均成绩[4]-退出课程~~~~~~~~~~~你想做什么(输入一个数字)~~~~~~~:0输入要添加的学生姓名:Dreamzboy进入新学生的年级:99,99,99{'James':[70,75,95],'Adams':[75,90,73],'Benjamin':[80,79,85],'Dreamzboy':[99,99]}仍在同一课程中,我正在尝试编写一个可以一个接一个地删除分数的方法。你也能帮我吗?这是我编写的代码。def remove_scores():StudNaMe=input(“输入要删除分数的学生姓名:”)SCORE_remove=print(“输入要删除的分数:”)如果StudNaMe在StuDict:StuDict[StudNaMe]。删除(SCORE_remove)print(StuDict)否则:print(StudNaMe,“不在我们的数据库中”)欢迎您!考虑将问题标记为: