【发布时间】:2011-11-03 10:20:50
【问题描述】:
我的问题很难解释。
我想创建一个包含嵌套 for 循环的函数,
其数量与传递给函数的参数成正比。
这是一个假设的例子:
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) 的变量实际上并未在嵌套代码中使用。
您的第一个想法可能是创建一个 for 循环,其范围是 number 参数的幂...
这行不通,因为产品会很大。我需要有 8 个嵌套 for 循环的实例。
产品对于 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
龟
空闲
视窗7
【问题讨论】:
-
使用递归有什么你不明白的地方吗?
-
如果您担心
range的大小,请使用xrange。 -
@Keith NameError: name 'xrange' 未定义
-
@ghost21blade in python3,
range与python2的xrange具有相同的行为
标签: python recursion for-loop nested fractals