我正在尝试编写一个程序,该程序从用户获取输入并按字母顺序将其放入文件中。(Names.txt是一个按字母顺序列出给定名称的文件)
这是我到目前为止所做的。
def main():
outfile = open("Names.txt","a")
name1 = 0
while True:
if name1 != "q":
name1 = input("Enter a first name, if you want to quit, enter q: ")
list1 = []
list1.append("\n"+name1)
outfile.writelines(list1)
else:
break
list1.sort()
main()
假设我进入Brian,Tyler和q退出。 但即使我在while循环中使用break,我仍然在文件中有q。 另外,为了将输入放在适当的位置,我使用了排序,但没有变化..
我的代码出了什么问题?请帮忙。 提前谢谢。
答案 0 :(得分:0)
是的,首先分配name1并将其写入文件,并且检查(name1!=“q”)仅在下一次迭代中中断。 然后你正在整理并且什么都不做。您需要对列表进行排序,然后写入文件以查看排序列表。
答案 1 :(得分:0)
您应该将input()
移出if
阻止。
def main():
outfile = open("Names.txt","a")
while True:
name1 = input("Enter a first name, if you want to quit, enter q: ")
if name1 != "q":
list1 = []
list1.append(name1+"\n")
outfile.writelines(list1)
else:
break
list1.sort()
main()
答案 2 :(得分:0)
您的代码中存在一些错误。
首先,您应该在获得输入后检查name1 != "q"
。你这样做,你得到输入,将它附加到列表,写入文件,然后你检查名称是否是q顺序,你应该检查之前将它附加到列表。
第二个错误是当你执行list1 = []
时,你在每次迭代时都会覆盖列表,因此你最多只能在列表中有一个名字,你应该在循环之前初始化列表。 / p>
最后,您应该将列表写入文件后对列表进行排序,而不是在循环的每次迭代中。现在的方式,名称将不会在文件中排序。此外,当您使用outfile.close()
写入文件时,应关闭该文件。
代码应该是这样的:
def main():
outfile = open("Names.txt","a")
list1 = []
while True:
name1 = input("Enter a first name, if you want to quit, enter q: ")
if name1 != "q":
list1.append(name1+"\n")
else:
break
list1.sort()
for name in list1:
outfile.writelines(name)
outfile.close()
main()