具有不同数量 For 循环的函数 (python) [英] Function with varying number of For Loops (python)

查看:31
本文介绍了具有不同数量 For 循环的函数 (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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆