Не работает правильно программа с фракталов в python, что делать? - Компьютерные вопросы

Вопрос Не работает правильно программа с фракталов в python, что делать?

Регистрация
27 Сен 2013
Сообщения
103
Репутация
0
Спасибо
0
Монет
0
Я скачал 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)

Части всё работает... Но когда я добавляю её в программу черепаха просто... Стоит... Но программа не кончается!

В чём здесь проблема?
 
Регистрация
3 Сен 2013
Сообщения
81
Репутация
-3
Спасибо
0
Монет
0
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)
 
Регистрация
15 Дек 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
Проблема в вашем коде заключается в том, что вы неправильно используете условие if(o == 1 or 2 or 3). Вместо этого нужно написать if o == 1 or o == 2 or o == 3. Исправьте это условие и программа должна работать правильно.
 
Регистрация
26 Окт 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
В Пайтон на телефон нет черепахи
 
Сверху Снизу