Моя проблема трудно объяснить.
Я хочу создать функцию, содержащую вложенные для циклов,
величина которого пропорциональна аргументу, переданному функции.
Вот гипотетический пример:
Function(2)
... будет включать...
for x in range (y):
for x in range (y):
do_whatever()
Другой пример...
Function(6)
... будет включать...
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
for x in range (y):
whatever()
Переменные цикла for (y) на самом деле НЕ используются во вложенном коде.
Ваша первая мысль может заключаться в создании ONE для цикла, с диапазоном, который зависит от аргумента number...
ЭТО НЕ МОЖЕТ РАБОТАТЬ, потому что продукт будет ОГРОМНЫМ. У меня есть экземпляры, где есть 8 вложенных циклов.
Продукт слишком велик для диапазона в цикле for.
Есть другие аргументы, которые необходимо передать функции, но я могу справиться с этим сам.
Здесь код (он создает фракталь снежинки)
from turtle import *
length = 800
speed(0)
def Mini(length):
for x in range (3):
forward(length)
right(60)
penup()
setpos(-500, 0)
pendown()
choice = input("Enter Complexity:")
if choice == 1:
for x in range (3):
forward(length)
left(120)
elif choice == 2:
for x in range (3):
Mini(length/3)
left(120)
if choice == 3:
for x in range (6):
Mini(length/9)
right(60)
Mini(length/9)
left(120)
if choice == 4:
for y in range (6):
for x in range (2):
Mini(length/27)
right(60)
Mini(length/27)
left(120)
right(180)
for x in range (2):
Mini(length/27)
right(60)
Mini(length/27)
left(120)
if choice == 5:
for a in range (6):
for z in range (2):
for y in range (2):
for x in range (2):
Mini(length/81)
right(60)
Mini(length/81)
left(120)
right(180)
for x in range (2):
Mini(length/81)
right(60)
Mini(length/81)
left(120)
right(180)
right(180)
if choice == 6:
for c in range (6):
for b in range (2):
for a in range (2):
for z in range (2):
for y in range (2):
for x in range (2):
Mini(length/243)
right(60)
Mini(length/243)
left(120)
right(180)
for x in range (2):
Mini(length/243)
right(60)
Mini(length/243)
left(120)
right(180)
right(180)
right(180)
right(180)
if choice == 7:
for a in range (6):
for b in range(2):
for c in range (2):
for d in range (2):
for e in range (2):
for f in range (2):
for y in range (2):
for x in range (2):
Mini(length/729)
right(60)
Mini(length/729)
left(120)
right(180)
for x in range (2):
Mini(length/729)
right(60)
Mini(length/729)
left(120)
right(180)
right(180)
right(180)
right(180)
right(180)
right(180)
Буду признателен за любую помощь, которую вы можете мне дать вообще,
хотя, если вы предлагаете другой метод (например, рекурсия),
пожалуйста, не просто вставляйте код; вместо этого предлагает некоторые идеи, которые могут привести меня в правильном направлении.
(Алгоритм предназначен для заданий специалиста по математике)
функции:
Python 2.7.1
Черепаха
IDLE
Windows7