Проблема итерации при кодировании для модуля Turtle - PullRequest
1 голос
/ 07 октября 2019

Я получаю сообщение об ошибке, что '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()

1 Ответ

0 голосов
/ 07 октября 2019

Когда у нас есть цикл, подобный:

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

Некоторые контролеры кода Python помечают переменную i как неиспользованную, поскольку она установлена, но ее значение никогда не используется. Распространенный способ обойти это - использовать вместо общего использования имя Python общего назначения _:

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)
...