[英]give users the option to sort a list created from a txt document based on input
该程序将询问用户要查看其结果的类,并询问他们如何对其进行排序。 该列表是根据文本文档中的各行创建的。 程序现在要做的就是在对排序进行选择后进行排序,然后以所选方式打印。
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语句来对用户的选择方式进行排序,然后以正确的顺序打印列表?
在代码的此部分中,打开文件,并仔细阅读所有行,并将输出保存在名为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)如果您使用相同的文件对象,它将输出一个空字符串,因为您已经读取了文件中的所有行,并且光标位于末尾。
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
关键字作为上下文管理器,以确保正确关闭文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.