为什么这段代码不能很好地工作?

时间:2015-04-27 18:44:21

标签: python

#This will import time, so that I can break between lines
import time
import random
import os
#This will open the file, and will allow me to print it out
words =open("Words.txt", "r+")
print(words.read())
#This sets the different words to variables
x = 0
y = 0
z = 0
grid = 0

for i in words:
     list_of_words[x] = i.rstrip()
     x = x +1
     grid = [words[i:i + 3] for i in range(0, len(words), 3)]
for x,y,z in grid:
     print(x,y,z)
#This will close the word file
words.close

我已经完成了第一部分工作,但是当谈到第二部分时,它说我必须有一个int。这是错误消息:

Traceback (most recent call last):
  File "C:\Users\Jamie\Documents\Jamie\Homework\Computing\Coureswork\Computer Science Courseword real.py", line 18, in <module>
    for x,y,z in grid:
TypeError: 'int' object is not iterable

1 个答案:

答案 0 :(得分:2)

您获得的错误是因为grid0(您将其初始化为),而不是在第一个循环中为该名称分配列表解析时成为列表

该循环从不执行任何操作,因为您已经在程序顶部附近使用words words.read()文件。迭代文件什么都不做,因为你已经在最后了。要再次读取文件,您需要关闭并重新打开它,或使用words.seek(0)来回放文件中的位置。或者更好的是,如果你不需要,不要将整个内容读成字符串。

请注意,即使修复了阅读文件的问题,您也会遇到其他问题。例如,您从未定义list_of_words,因此会导致异常。您还尝试将文件切片到您要分配给grid的列表解析中。这不合法。