具有不同数量 For 循环的函数 (python) [英] Function with varying number of For Loops (python)
问题描述
我的问题很难解释.
我想创建一个包含嵌套 for 循环的函数,
其数量与传递给函数的参数成正比.
I want to create a function that contains nested for loops,
the amount of which is proportional to an argument passed to the function.
这是一个假设的例子:
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) 的变量实际上并未在嵌套代码中使用.
The variables of the for loop (y) are NOT actually used in the nested code.
您的第一个想法可能是创建一个 for 循环,其范围是 number 参数的幂...
这行不通,因为产品会很大.我需要有 8 个嵌套 for 循环的实例.
对于 for 循环中的范围,乘积太大.
Your first thought might be to create ONE for loop, with a range that is to the power of the number argument...
THIS CAN NOT WORK because the product would be HUGE. I have instances required where there are 8 nested for loops.
The product is too large for a range in a for loop.
还有其他参数需要传递给函数,但我可以自己处理.
There are other arguments needed to be passed to the function, but I can handle that myself.
这是代码(它创建了雪花分形)
Here's the code (it creates the Snowflake Fractal)
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)
如果您能给我任何帮助,我将不胜感激,
不过,如果您建议使用不同的方法(例如递归),
请不要只粘贴代码;相反,提出一些可以让我朝着正确方向前进的想法.
I'd appreciate any help you can give me at all,
though if you suggest a different method (such as recursion),
please don't just paste the code; instead, suggests some ideas that could put me in the right direction.
(该算法适用于专业数学作业)
(The algorithm is for a Specialist Math Assignment)
规格:
Python 2.7.1
乌龟
空闲
视窗7
specs:
Python 2.7.1
Turtle
IDLE
Windows7
推荐答案
这个问题可以通过递归解决.我只是在这里写一个算法,因为我相信这可能是一个普遍的问题.
This problem can be solved by recursion. I am just writing an algorithm here, since I believe this can be a general problem.
function Recurse (y, number)
if (number > 1)
Recurse ( y, number - 1 )
else
for x in range (y)
whatever()
这篇关于具有不同数量 For 循环的函数 (python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!