繁体   English   中英

为用户提供基于输入对从txt文档创建的列表进行排序的选项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM