在提示文件中排序和打印多行
sorting and printing multiple lines in a prompted file
这是我现有的代码:
filename = input("Enter file name (with extension) to read: ")
if filename == 'x':
exit()
else:
c = open(filename, "r")
print("\nThe file,", filename, "opened successfully!")
print("The file", filename)
print(c.readlines())
c.close()
我的输出就是我输入的文件,太棒了!但我的问题是我只需要弄清楚如何按排序顺序打印列表。由于列表是由用户输入生成的,我没有使用排序功能的经验,我可以直接对 c.readlines 进行排序吗?
编程就是分解,将大问题分解成小块。在您的程序中有几个不同的任务:提示用户输入文件名、打开该文件、对行进行排序并打印它们。你已经掌握了前两个,所以现在把它们从你的脑海中抛开,专注于后两个。打开文件后,文件是否由用户硬编码和输入都没有区别。
要对列表进行排序,您必须使用主要选项:调用 l.sort()
将其原地排序,或调用 sorted(l)
以 return 排序后的副本而不修改原件。让我们使用第二个并循环 sorted()
:
的结果
for line in sorted(c.readlines()):
print(line)
对 readlines()
的调用是可选的。也可以直接循环遍历文件,就是shorthand循环遍历。
for line in sorted(c):
print(line)
(我自己更喜欢明确地调用 readlines()
。这是一种风格选择;任何一种方式都是可以接受的。)
这是我现有的代码:
filename = input("Enter file name (with extension) to read: ")
if filename == 'x':
exit()
else:
c = open(filename, "r")
print("\nThe file,", filename, "opened successfully!")
print("The file", filename)
print(c.readlines())
c.close()
我的输出就是我输入的文件,太棒了!但我的问题是我只需要弄清楚如何按排序顺序打印列表。由于列表是由用户输入生成的,我没有使用排序功能的经验,我可以直接对 c.readlines 进行排序吗?
编程就是分解,将大问题分解成小块。在您的程序中有几个不同的任务:提示用户输入文件名、打开该文件、对行进行排序并打印它们。你已经掌握了前两个,所以现在把它们从你的脑海中抛开,专注于后两个。打开文件后,文件是否由用户硬编码和输入都没有区别。
要对列表进行排序,您必须使用主要选项:调用 l.sort()
将其原地排序,或调用 sorted(l)
以 return 排序后的副本而不修改原件。让我们使用第二个并循环 sorted()
:
for line in sorted(c.readlines()):
print(line)
对 readlines()
的调用是可选的。也可以直接循环遍历文件,就是shorthand循环遍历。
for line in sorted(c):
print(line)
(我自己更喜欢明确地调用 readlines()
。这是一种风格选择;任何一种方式都是可以接受的。)