【问题标题】:Need help to create a Koch Snowflake of numbers in Python需要帮助在 Python 中创建数字的科赫雪花
【发布时间】:2019-11-04 16:09:55
【问题描述】:

我想在 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'

等等,我该怎么做呢?

【问题讨论】:

  • 您只包含了F 作为示例,那么其他输入会怎样呢?您应该展示您尝试/研究过的内容并查看How to Ask
  • 那么参数,或者输入将是一个数字。这将告诉函数它想要重复多少次来生成分形。

标签: python turtle-graphics fractals


【解决方案1】:

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

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'

【讨论】:

    【解决方案2】:

    你可以做一个普通的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'
    

    【讨论】:

    • 谢谢!这很好用,有没有办法让它也适用于希尔伯特曲线?希尔伯特是你从 L 开始,L 变成“+RF-LFL-FR+”,然后 'R' 变成 '-LF+RFR+FL-'。
    • @KittyWhale,不客气。您能否将此作为一个新问题发布,因为这个原始问题已经得到解答?如果您生成了一些您下次尝试的代码,您还可以保护您的问题不被否决。祝你好运!
    • 好吧,我会的,我真的不知道如何开始,但你让它看起来很容易哈哈。
    • 现在你已经开始了,试着自己解决剩下的问题。卡住时,用您的代码 ping 一个问题。 :)
    • 我发布了新问题
    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 2017-09-03
    • 2012-12-02
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多