尝试将输入插入到文件中,但是具有“NoneType”对象是不可迭代的“错误”

时间:2016-05-23 01:35:36

标签: python

我正在尝试从用户那里获取输入,并将该输入放入文件的正确位置。

这是我到目前为止所做的事情(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

我该怎么办呢? 我做得对吗?

2 个答案:

答案 0 :(得分:1)

为列表添加名称的行应该只是:

list1.append(name1)

因为append修改了现有列表,并且没有返回任何内容(即返回None)。

因此,您使用list1None设置为list1 = list1.append(name1)。然后你将None传递给了outfile.writelinesNone试图迭代你传递的东西,这当然对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)