需要帮助以Python创建数字的科赫雪花

时间:2019-11-04 16:09:55

标签: python turtle-graphics fractals

我想用python编写一个函数,该函数将使用初始字符串(例如'F'),并将每个'F'替换为'F-F ++ f-f',然后重复。因此,该函数的参数将是一个数字,告诉该函数应该执行多少次。

我没有编写任何代码,因为我不确定从哪里开始,但是我认为我需要使用while循环使其重复。

示例:

snowflake(1)
#It would return
'F'
snowflake(2)
#It would return
'F-F++F-F'
snowflake(3)
#It would return
''F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F'

以此类推,我应该怎么做?

2 个答案:

答案 0 :(得分:2)

这可以使用递归函数来实现。例如,您可以定义

def snowflake(in_str, n):
    if n == 1:
        return in_str
    else:
        return snowflake(in_str.replace('F', 'F-F++F-F'), n-1)

其中in_str是您的输入,n是您需要将此功能应用于in_str

的次数

例如,您有

print(snowflake('F', 3))
'F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F'

答案 1 :(得分:1)

您可以执行常规的for循环:

def snowflake(x):
    s = 'F'
    for i in range(x-1):
        s = s.replace('F', 'F-F++F-F')
    return s

运行时将输出:

>>> snowflake(1)
'F'
>>> snowflake(2)
'F-F++F-F'
>>> snowflake(3)
'F-F++F-F-F-F++F-F++F-F++F-F-F-F++F-F'