我正在尝试从用户那里获取输入,并将该输入放入文件的正确位置。
这是我到目前为止所做的事情(Names.txt有一个按字母顺序排列的名字列表,我不想要任何重复,所以我将列表转换成集合)
def main():
outfile = open("Names.txt","a")
list1 = []
name1 = 0
name1 = input("Enter a name, if you want to quit, enter q: ")
while name1 != "q":
list1 = list1.append(name1)
outfile.writelines(list1)
list1.sort()
s = set(list1)
return s
main()
但每当我输入q以外的东西时,我都会遇到问题。
Traceback (most recent call last):
File "C:\Users\SKKU\Desktop\1.py", line 12, in <module>
main()
File "C:\Users\SKKU\Desktop\1.py", line 8, in main
outfile.writelines(list1)
TypeError: 'NoneType' object is not iterable
我该怎么办呢? 我做得对吗?
答案 0 :(得分:1)
为列表添加名称的行应该只是:
list1.append(name1)
因为append
修改了现有列表,并且没有返回任何内容(即返回None
)。
因此,您使用list1
将None
设置为list1 = list1.append(name1)
。然后你将None
传递给了outfile.writelines
,None
试图迭代你传递的东西,这当然对luaopen_base
没有意义。
答案 1 :(得分:1)
另一个指针,声明name1 = 0
没有用compile
另外,你的while循环是无限期地在你的文件中写行,
您正在指示您的程序将name1追加到您的列表中,然后根据@Blorgbeard的提及,写一些对您的文件毫无意义的内容 因此,您可能需要在代码中重写/删除一些内容。
你可能想考虑阅读List操作(http://effbot.org/zone/python-list.htm)并使用for循环:
name1 = 0 #you can remove this
name1 = input("Enter a name, if you want to quit, enter q: ")
while name1 != "q":
list1 = list1.append(name1)
outfile.writelines(list1)