该程序将询问用户他们想要查看结果的类,并询问他们如何对它们进行排序。列表是从文本文档中的行创建的。 程序现在需要做的就是在进行排序选择后进行排序,然后按照所选择的方式进行打印。
print ("Please enter the class number below.")
print ("After that please select how you would like to sort them")
classnumber = input("Which results do you want to view? (enter class number)")
if classnumber == ('1'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
if classnumber == ('2'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
if classnumber == ('3'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
print ("Press a For Alphabetically")
print ("Press h For Highest To Lowest")
print ("Press m For Mean (Average Highest To Lowest)")
sort = input ("How would you like to sort the results?")
if sort == 'a':
sorted("class1.txt")
print([i.strip().split() for i in ("class1.txt").readlines()])
if sort == 'h':
sorted(reverse=True)
print([i.strip().split() for i in ("class.2txt").readlines()])
if sort == 'm':
averages=[]
sorted(reverse=True)
print([i.strip().split() for i in ("class3.txt").readlines()])
我如何获得if语句来排序用户如何选择然后以正确的顺序打印列表?
答案 0 :(得分:1)
在代码的这一部分中,您打开文件并阅读所有行,将输出保存在名为li
的列表中:
if classnumber == ('1'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
if classnumber == ('2'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
if classnumber == ('3'):
li = [i.strip().split() for i in open("class1.txt").readlines()]
然后在代码的这一部分中,您尝试再次读取文件对象中的行,但是1)您实际上从未打开过该文件,并且2)如果您使用相同的文件对象,它将输出一个空的string,因为你已经读过文件中的所有行,光标就在最后。
if sort == 'a':
sorted("class1.txt")
print([i.strip().split() for i in ("class1.txt").readlines()])
if sort == 'h':
sorted(reverse=True)
print([i.strip().split() for i in ("class.2txt").readlines()])
if sort == 'm':
averages=[]
sorted(reverse=True)
print([i.strip().split() for i in ("class3.txt").readlines()])
因为您已经在名为li
的列表中读取了所有内容,所以您可以使用它而不是尝试再次打开文件,如下所示:
if sort == 'a':
sorted("class1.txt")
print([i.strip().split() for i in li])
if sort == 'h':
sorted(reverse=True)
print([i.strip().split() for i in li])
if sort == 'm':
averages=[]
sorted(reverse=True)
print([i.strip().split() for i in li])
关于sorted()
函数的使用仍然存在一些错误,即sorted()
返回已排序的列表副本,它不会修改原始列表。
还值得一提的是,你永远不会close()
你的文件对象,这是一个等待发生的灾难。我会使用with
关键字作为上下文管理器来确保文件正确关闭。