QUESTION: Implement the following pseudocode to draw a checkered flag to the screen.
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
Please copy and paste the link see the ouput: http://www.awesomescreenshot.com/image/45977/12eaef67de44c2b291ecd47fe8d10135
I implemented the pseudocode, but I need some help. I am keep getting this error: row, col = findGrid(x)
TypeError: 'int' object is not iterable
My program:
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()
If you want to
return
two values, you must combine them in some way. If you do this:the program will
return
therow
and then exit the function, because that's whatreturn
does. Nothing after the firstreturn
will ever be executed. Try this instead:The returned value will be a
tuple
, which is exactly what you need to carry outrow, col = findGrid(x)
as appears in yourmain()
. Instead of evaluating to a singleint
,findGrid(x)
will instead evaluate to atuple
containing twoint
s, and Python can iterate over thattuple
to place each value into the specified variablesrow
andcol
.The error messages generated by the Python interpreter are usually pretty informative. In this case, when it says
int object is not iterable
, you can bet that it tried to iterate over anint
and understandably failed. All you have to do then is deduce where the erroneous statement in question is looking for an iterable, find what produces the problematic expression (findGrid(x)
), and inspect whether it returns anint
or an iterable.