#Variable containing the users class
Classes = ["classa","classb","classc"]
#Creates a variable so the textfile for ClassA can be opened.
OpenA = open ("ClassA.txt","a")
#Creates a variable so the textfile for ClassB can be opened.
OpenB = open ("ClassB.txt","a")
#Creates a variable so the textfile for ClassC can be opened.
OpenC = open ("ClassC.txt","a")
while True:
Class = input("What class' results would you like to see?(ClassA, ClassB or ClassC)")
#User friendly accepts the users answer if it is in higher or lower case
Class = Class.lower()
#Checks if the class provided by the user is from the three classes which have been provided
if Class.lower() in Classes:
#Leaves the while loop if all the conditions have been met
break
else:
#Tells the user that the class which they had inputed was not correct
print("Invalid, please choose a class from the list provided!")
if Class.lower() == ("classa"):
print("Showing results for ClassA")
elif Class.lower() == ("classb"):
print("Showing results for class B")
else:
print("Showing results for class C")
上面的代码是我到目前为止完成此任务所创建的代码。
我需要帮助的主要部分是创建字典,因为系统应存储每个学生的最后三个分数。然后,它还需要按字母顺序,从最高到最低和平均值对文本文件的结果进行排序。但是,我不知道如何做到这一点,特别是涉及词典时。 希望通过结果来解释,以确保我能够从中学习。
答案 0 :(得分:0)
首先,尽量不要用大写字母开始变量名称(例如,OpenA
应为openA
)。其次,不要将Class
用作变量名,因为它是用于声明新类的保留字。
关于排序词典的问题:如Devin Jeanpierre所述,这是不可能的。你最好使用dict的列表/排序表示。引用链接:
无法对dict进行排序,只能获得已排序的dict的表示形式。 Dicts本质上是无序的,但其他类型,如列表和元组,则不是。所以你需要一个排序表示,它将是一个列表 - 可能是一个元组列表。
但是如果必须使用字典,则可以使用字典的排序表示。这是sorted()
函数的文档。
import operator
# dict initialization here, we'll call it dict1
result = sorted(dict1.items(), key=operator.itemgetter(1))
允许您对dict的值进行排序并将其存储在元组列表中。