为 Turtle 模块编码时的迭代问题

Iteration issue when coding for Turtle module

我不断收到一条错误消息,指出 'i' 是一个未使用的变量,但我正在使用它来迭代一个具有取决于用户输入 (numShapes) 的可变范围的循环。为什么 python 不接受整数值的变量?

***此代码旨在调用 turtle 模块的两个绘图函数之一,随机放置可变数量 (numShapes) 的不同大小和位置的绘图。

import random
import turtle, BoundingBox
from TurtleShapes import drawOneSquare
from TurtleShapes import drawOneShape

x = turtle.Turtle()

def drawEverywhere(x, func):      
    numShapes = int(input("How many shapes?"))
    for i in range(numShapes):
        x.penup()
        x.goto((random.randint(-1150,1150), random.randint(-550,550))      

        for i in range(numShapes):
            func(turtle, size))
                size = random.randint(10,40)

if __name__ == '__main__':
    win = turtle.Screen()
    BoundingBox.drawBoundingBox()

    ### Decide which shape ###
    input("Which shape? 's' for square or 'c' for circle")
        if input == 's':
            drawEverywhere(turtle, drawOneSquare)
        elif input == 'c':    
            drawEverywhere(turtle, drawOneShape)   
        else:
            print('invalid input') 

    win.exitonclick()

当我们有一个像这样的循环时:

for i in range(10):
    print(":-)")

一些 Python 代码检查器会将变量 i 标记为未使用,但它的值从未使用过。一个常见的解决方法是使用 Python 的通用 "throwaway" 变量名 _ 代替:

for _ in range(10):
    print(":-)")

看看是否可以抑制您收到的 unused 警告。这是 Python.

_ 变量的几种用法之一

关于您的代码的其他说明:

x.goto((random.randint(-1150,1150), random.randint(-550,550))

它缺少右括号并且不需要额外的左括号来构成元组 -- 它可以简化为:

from random import randint
# ...
x.goto(randint(-1150, 1150), randint(-550, 550))

这段代码会给你带来麻烦:

func(turtle, size))
    size = random.randint(10,40)

由于括号不平衡,缩进和执行顺序不合理。你可能想要:

size = random.randint(10, 40)
func(turtle, size)