Проблемы с добавлением в переменную в течение l oop [Python] - PullRequest
1 голос
/ 12 марта 2020

Я читаю книгу под названием "Математические приключения с Python", где она обучает вас классным математическим экспериментам через модуль черепахи. Книга предлагает задачу, где вы должны сделать спираль из квадратов, где квадраты с каждым разом увеличиваются. Это должно выглядеть следующим образом Я пытался увеличить размер каждой стороны с помощью увеличения переменной внутри для l oop, но я получаю эту ошибку: локальная переменная 'x' ссылается перед присваиванием

Я попытался добавить переменную в другой l oop и создать переменную внутри функции.

from turtle import *

x = 100

def square():
    for i in range(4):
        right(90)
        forward(x)
        x += 5


for m in range(100):
    square()
    right(6)

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Вы не должны увеличивать x внутри l oop, так как это сделает каждую сторону разной длины, поэтому она не будет квадратной.

Вы должны сделать x a параметр функции, и увеличивайте его в l oop, который его вызывает.

def square(side_len):
    for i in range(4):
        right(90)
        forward(side_len)

for x in range(100, 600, 5):
    square(x):
    right(6)
0 голосов
/ 12 марта 2020

Чтобы не получить локальную переменную 'x', на которую ссылаются перед присваиванием, вам нужно сделать глобальную переменную xa Способ сделать это:

def square():
    global x 
    for i in range(4):
        right(90)
        forward(x)
        x += 5
...