Не работает правильно программа с фракталов в python, что делать?
Я скачал python на телефон и написал эту программу:
import turtle as t
t.speed(1)
a = 50
Moves = [1]
Coords_rn = 1
for p in range(5):
for o in Moves:
if(o == 1 or 2 or 3):
Moves.append(o+1)
elif(o == 4):
Moves.append(1)
for a in Moves:
if(a == 1 and Coords_rn == 1):
t.forward(10)
elif(a == 2 and Coords_rn == 2):
t.forward(10)
elif(a == 3 and Coords_rn == 3):
t.forward(10)
elif(a == 4 and Coords_rn == 4):
t.forward(10)
elif(a == 1 and Coords_rn == 2):
Coords_rn = 1
t.right(90)
t.forward(10)
elif(a == 1 and Coords_rn == 3):
Coords_rn = 1
t.right(180)
t.forward(10)
elif(a == 1 and Coords_rn == 4):
Coords_rn = 1
t.left(90)
t.forward(10)
elif(a == 2 and Coords_rn == 1):
Coords_rn = 2
t.left(90)
t.forward(10)
elif(a == 2 and Coords_rn == 3):
Coords_rn = 2
t.right(90)
t.forward(10)
elif(a == 2 and Coords_rn == 4):
Coords_rn = 2
t.right(180)
t.forward(10)
elif(a == 3 and Coords_rn == 1):
Coords_rn = 3
t.right(180)
t.forward(10)
elif(a == 3 and Coords_rn == 2):
Coords_rn = 3
t.left(90)
t.forward(10)
elif(a == 3 and Coords_rn == 4):
Coords_rn = 3
t.right(90)
t.forward(10)
elif(a == 4 and Coords_rn == 1):
Coords_rn = 4
t.right(90)
t.forward(10)
elif(a == 4 and Coords_rn == 2):
Coords_rn = 4
t.left(180)
t.forward(10)
elif(a == 4 and Coords_rn == 3):
Coords_rn = 4
t.left(90)
t.forward(10)
Без этой:
for p in range(5):
for o in Moves:
if(o == 1 or 2 or 3):
Moves.append(o+1)
elif(o == 4):
Moves.append(1)
Части всё работает... Но когда я добавляю её в программу черепаха просто... Стоит... Но программа не кончается!
В чём здесь проблема?
for p in range(5):
for o in Moves:
if(o == 1 or 2 or 3):
Moves.append(o+1)
elif(o == 4):
Moves.append(1)
Для начала if(o == 1 or 2 or 3) - неправильное условие. Оно всегда равно True, потому что 2 = True и 3 = True. Такое условие НЕ проверят равно ли o 2 или 3.
А не работает, потому что эта штука уходит в бесконечный цикл даже с правильно написанным условием. Без него оно просто всегда будет добавлять o+1 до бесконечности, а с правильным будет создавать бесконечный список [1,2,3,4,1,2,3,4,1,2,3,4,...]
Что работает без этой части тоже непонятно, потому что спискок Moves = [1,2,3,4] зациклен в основной программе и будет рисовать один квадратик - на каждой итерации после первой черепаха будет делать:
t.left(90)
t.forward(10)
Проблема в вашем коде заключается в том, что вы неправильно используете условие if(o == 1 or 2 or 3). Вместо этого нужно написать if o == 1 or o == 2 or o == 3. Исправьте это условие и программа должна работать правильно.
В Пайтон на телефон нет черепахи
тебе же пишет в ошибке что ты инвалид, бож