问题:实施以下伪代码以在屏幕上绘制方格旗。
1. Ask the user for the size of the checkered flag (n).
2. Draw an n x n grid to the screen.
3. For i = 0,2,4,...,62:
4. row = i // n
5. offset = row % 2
6. col = (i % n) + offset
请复制并粘贴该链接,请参阅输出:http://www.awesomescreenshot.com/image/45977/12eaef67de44c2b291ecd47fe8d10135
我实现了伪代码,但我需要一些帮助。我一直收到此错误:row, col = findGrid(x)
TypeError: 'int' object is not iterable
我的节目:
from turtle import*
def size():
size = eval(input("Please enter the size of the checkered flag: "))
return size
def draw(n):
wn = Screen()
wn.setworldcoordinates(-1,-1,10,10)
pen = Turtle()
for i in range(0,n+1):
pen.up()
pen.goto(0,i)
pen.down()
pen.forward(n)
pen.left(90)
for i in range(0,n+1):
pen.up()
pen.goto(i,0)
pen.down()
pen.forward(n)
def findGrid(n):
for i in range(0,63):
row = i // n
offset = row % 2
col = (i % n) + offset
return row
return col
def fillSquare(x,y):
pen = Turtle()
pen.hideturtle()
pen.speed(10)
pen.up()
pen.goto(x,y)
pen.fillcolor("black")
pen.begin_fill()
def main():
x = size()
y = draw(x)
row, col = findGrid(x)
f = fillSquare(row, col)
main()
答案 0 :(得分:2)
如果您想要return
两个值,则必须以某种方式将它们组合在一起。如果你这样做:
return row
return col
程序将return
row
然后退出该功能,因为这是return
所做的。在第一个return
之后将执行任何操作。试试这个:
return row, col
返回的值为tuple
,这正是您row, col = findGrid(x)
中显示的main()
所需的值。而不是评估单个int
,而findGrid(x)
将评估为包含两个tuple
的{{1}},而Python可以迭代int
来放置每个tuple
值为指定变量row
和col
。
Python解释器生成的错误消息通常非常有用。在这种情况下,当它显示int object is not iterable
时,您可以打赌它试图迭代int
并且可以理解地失败了。那么你所要做的就是推断出有问题的错误语句在哪里寻找一个可迭代的,找到产生有问题的表达式的内容(findGrid(x)
),并检查它是返回int
还是可迭代的。 / p>