python科赫曲线编程实现雪花下落的效果_Python笔记 :科赫雪花曲线(计算思维训练1)...

article/2025/9/13 11:58:33

提要:基于MOOC的“Python语言程序设计基础”,主讲人:嵩天。基本算是课本笔记。

科赫雪花曲线设计思路

一、三种人类思维特征

逻辑思维:推理和演绎,数学为代表;

实证思维:实验和验证,物理为代表;

计算思维:设计和构造,计算机为代表;

二、计算思维的概念

概念诞生:2006年,时任美国卡内基-梅隆大学计算机系主任的周以真(Jeannette M. Wing)教授,提出了计算思维(Computational Thinking)概念——第一次从思维层面阐述了运用计算机科学的基础概念,来求解问题、设计系统和理解人类行为的过程。

实践手段:程序设计,是实践计算思维的重要手段。

解决思路:抽象实际问题的计算特性、利用计算机求解。

本质:抽象化(abstraction)和自动化(Automation)。

三、实例运用计算思维

在程序设计范涛,计算思维主要反映在如下几个方面:理解问题的计算特性、将计算特性抽象为计算问题、通过程序设计语言实现问题的自动求解等。

实例:科赫雪花曲线

看图:(分别是0阶、1阶、2阶和3阶科赫雪花曲线)

2a266265a1881ed73e4a438f8d0c4814.png

科赫雪花曲线总体思路:

分析科赫雪花曲线,发现可分解为基本&可重复的单元;

将这些单元设计为程序设计语言;

最后,通过计算机自动求解。

1st:理解问题的计算特性

通过分析,科赫雪花曲线的“基本&可重复“单元为两个层次:

- 从0阶科赫雪花曲线看出,可将三条边分解为一个基本单元——不妨叫它“边”,的3次重复性问题;

- 从大于0阶的科赫雪花曲线可以看出,可将每个边分为4个基本单元——不妨叫它“尖”,的4次重复性问题;

2nd:将计算特性抽象为计算问题

首先,定计算问题的对象:要计算的问题是“边”和“尖”,

其次,定计算问题的顺序:由“尖”组成“边”,再由“边”组成我们需要的“科赫雪花曲线”,

最后,定计算问题的参数:见第三步。

3rd:将计算问题转化为成设计语言

首先,定需要的工具(程序包):我们选择turtle,

其次,定需要设定的程序框架:我们选择“函数”,利用其“复用”和“递归”的特性,实现计算的”基本&可重复性“单元,

最后,定程序需要的接口参数:一个是科赫雪花曲线的“阶数”,另一个是科赫雪花曲线的“长度”后者称作“大小”。

四、解决方法

整体代码如下:

import turtle # 引入决解问题需要的工具——turtle作图包

# 定义turtle画笔和画布的参数

def huabi():

turtle.speed(0) # speed()参数有[0,10]:“0”特殊、代表最快速度,其余[1,10]值越大、速度越快

turtle.pensize(2) # 设置画笔宽度为2

turtle.setup(800,800, 100, 10) # setup()参数有4个:前两个代表画布的“宽”和“高”,当数值为整数时、表示绝对像素大小,当小数时、表示站屏幕的比例。后两个可以省略,默认为屏幕中心位置,代表距离“屏幕左上角”的距离,单位是像素密度,

turtle.penup() # 抬起画笔,之后的画笔动作、就不会产生图线

turtle.goto(-300, 100) # 以画布中心点为坐标原点(0,0),将画笔移动到坐标(-300,100)处

turtle.pendown() # 落下画笔,以便画图

# 定义“尖”

def koch(size, n):

if n==0: # 0阶的科赫雪花曲线就是一条线,大小为输入的“size”

turtle.fd(size)

else: # 高阶科赫雪花曲线

for i in [0, 60, -120, 60]: # turtle在“尖”的四条线上改变的角度,分别为0°,60°,-129°,60°

turtle.left(i) # 对应上边四个角度,一共需要转4次弯,画出本阶的四条线,

koch(size/3, n-1) # 每个角度下的一个边,对应低一阶的客户雪花曲线的“尖”;至此完成函数本身的循环和复用,自动画出一个完整的n阶“尖”

# 定义“边”

def sdkoch(size, n): # 完整的科赫雪花曲线由3个“边”组成,我们以上完成的是一个由“尖”组成的“边”,

koch(size, n)

turtle.right(120) # 2行代码一组,

koch(size, n)

turtle.right(120)

koch(size, n) # 至此,得到完整的n阶科赫雪花曲线

turtle.hideturtle() # 把turtle的光标隐藏

turtle.done() # 结束turtle

# 定义main()主函数

def main(size, n): # 设定参数接口

huabi()

sdkoch(size, n)

main(500, 2) # 在设定参数之后,调用主函数

附注:自己的思路

对于我,最难的时函数循环和复用部分:一开始把最基本的科赫雪花曲线组分、设为了1阶;但是,在推广到n阶时遇到问题,才不得不把基本组分设为0阶。

当初的错误胆码及思路:

第一步:写出最基本组分:1阶“尖”

if n == 1:

for i in [0, 60, -120, 60]:

turtle.left(i)

turtle.fd(size/3)

第二部:将基本组分推广到高阶,途径是利用高一阶——2阶,的组分

def koch(size, n):

if n == 1:

for i in [0, 60, -120, 60]: # for in()函数,即遍历取值函数,使得i分别取0,60,-120和60,分别带入for in()循环后边的程序

turtle.left(i)

turtle.fd(size/3)

else:

koch(size/3, n-1)

显然,结果错误。因为每个高阶科赫雪花曲线“尖”的4个线段,每一个线段都是由低一阶科赫雪花曲线的“尖”组成,意味着

koch(size/3, n-1)必须在 for in ()循环下。据此修改如下:

def koch(size, n):

if n==1:

for i in [0, 60, -120, 60]:

turtle.left(i)

turtle.fd(size/3)

else:

for i in [0, 60, -120, 60]: # for in()函数,即遍历取值函数,使得i分别取0,60,-120和60,分别带入for in()循环后边的程序

turtle.left(i)

koch(size/3, n-1)

但时明显没有如下简单:(我想,最关键的时没有把0阶,即三角形,视为科赫雪花曲线的缘故):

def koch(size, n):

if n==0:

turtle.fd(size)

else:

for i in [0, 60, -120, 60]:

turtle.left(i)

koch(size/3, n-1)


http://chatgpt.dhexx.cn/article/IeWd3bNN.shtml

相关文章

科赫雪花——python画图

1.什么是科赫雪花 科赫曲线是一种分形。其形态似雪花,又称科赫雪花、雪花曲线。 科赫曲线是出现在海里格冯科赫的论文中,是分形曲线中的一种。 科赫雪花是以等边三角形三边生成的科赫曲线组成的。每条科赫曲线的长度是无限大,它是连续而无…

科赫雪花分形的C语言实现!

科赫雪花分形的C语言实现! 4阶科赫雪花分形Windows下的代码实现: 4阶科赫雪花分形 链接: link. Windows下的代码实现: 仅贴出了窗口过程函数。 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {static int cxCl…

三阶科赫雪花PYTHON

代码 #科赫雪花 import turtle def kehe(len,n): if n 0: turtle.fd(len) else: for i in [0,60,-120,60]: turtle.left(i) kehe(len / 3, n - 1) lenth 500 level 3 du 120 def main(): turtle.penup() turtle…

python科赫雪花代码的意思_基于python绘制科赫雪花

什么是科赫曲线 科赫曲线是de Rham曲线的特例。给定线段AB,科赫曲线可以由以下步骤生成: 将线段分成三等份(AC,CD,DB) 以CD为底,向外(内外随意)画一个等边三角形DMC 将线段CD移去 分别对AC,CM,MD,DB重复1~3。 什么是科赫雪花 三段科赫曲线组成…

数学分形之科赫雪花

科赫雪花 绘图库&#xff1a;Easy Graphics Engine &#xff08;EGE&#xff09; 编程语言&#xff1a;c 科赫雪花 n5 反科赫雪花 n5 代码&#xff1a; #include <graphics.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #includ…

python科赫雪花正方形_python—科赫曲线(科赫雪花小包裹)

一、科赫曲线 运用递归&#xff0c;一阶一阶分隔&#xff0c;如2阶的每条小线是1阶&#xff08;所以代码为n-1&#xff09; import turtle def koch(size,n): if n 0: turtle.fd(size) else: for angle in [0,60,-120,60]: turtle.left(angle) koch(size/3,n-1) def…

利用科赫雪花绘制方块雪花

先上科赫雪花代码&#xff1a; from turtle import * def koch(size,n):if n0:fd(size)else:for angle in [0,60,-120,60]:left(angle)koch(size/3,n-1) def main():setup(600,600)penup()goto(-200,100)pendown()speed(50)pensize(2)level3 #雪花的阶数&#xff0…

递归,与,科赫雪花曲线

目录 壹&#xff1a;科赫雪花曲线&#xff08;Koch Snowflake Curve&#xff09; 贰&#xff1a;想法&#xff08;ideas&#xff09; 叁&#xff1a;代码实现&#xff08;Code Implementation&#xff09; 肆&#xff1a;打包&#xff08;Packing&#xff09; 伍&#xff…

科赫雪花c语言程序设计,用 C 语言画科赫雪花

作者&#xff1a;Milo Yip 链接&#xff1a;https://zhuanlan.zhihu.com/p/24688522 1. 科赫雪花和科赫曲线 科赫曲线(Koch curve)是一个简单的分形(fractal)图形。瑞典数学家海里格冯科赫(Helge von Koch&#xff1a;https://en.wikipedia.org/wiki/Helge_von_Koch)于 1904 年…

科赫雪花绘制

绘制单边科赫雪花 效果图 代码 from turtle import * def koch(size,n): if n0: fd(size) else: for angle in [0,60,-120,60]: left(angle) koch (size/3,n-1) def main(): setup(800,400) penup() goto(-300,…

python的科赫雪花

科赫曲线是一种像雪花的几何曲线&#xff0c;所以又称为雪花曲线&#xff0c;它是de Rham曲线的特例。科赫曲线是出现在海里格冯科赫的论文中&#xff0c;是分形曲线中的一种。其形态似雪花&#xff0c;又称科赫雪花、雪花曲线。 #科赫雪花#递归函数 import turtle def koch(si…

python绘制科赫雪花and科赫雪花进阶版

首先我们来绘制一个基本的3阶科赫雪花&#xff0c;由于和课上用的软件不一样&#xff0c;所以在课上看的代码只能当参考&#xff0c;实际比较繁琐。 代码如下 import turtle # 引入决解问题需要的工具——turtle作图包# 定义turtle画笔和画布的参数…

科赫雪花

科赫曲线 一个过程进行不断地迭代 使用递归和海龟 科赫曲线的绘制&#xff08;做一条直线&#xff0c;将中间的一段去掉&#xff0c;然后做一个凸起&#xff0c;形成科赫曲线&#xff09; 递归思想&#xff1a;函数分支 递归链条:线段的组合 递归基例&#xff1a;初识线段 im…

Python实例8:科赫雪花小包裹(函数递归)

科赫曲线&#xff0c;也叫雪花曲线。绘制科赫曲线。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬…

科赫雪花小包裹实例详解

高大上的分形几何 分形几何是一种迭代的几何图形&#xff0c;广泛存在于自然界中&#xff08;树叶&#xff0c;菜花&#xff09;&#xff08;这个东西的整体与他的局部具有很相似的特点&#xff09; 分形几何中有一种特殊的曲线叫做科赫曲线&#xff0c;也叫雪花曲线 科赫曲…

分形之科赫(Koch)雪花

科赫曲线是一种分形。其形态似雪花&#xff0c;又称科赫雪花、雪花曲线.瑞典人科赫于1904年提出了著名的“雪花”曲线&#xff0c;这种曲线的作法是&#xff0c;从一个正三角形开始&#xff0c;把每条边分成三等份&#xff0c;然后以各边的中间长度为底边。分别向外作正三角形&…

用Python画科赫雪花

文章目录 科赫曲线飘雪三维飘雪 科赫曲线 科赫曲线因为十分像雪花&#xff0c;所以被成为雪花曲线&#xff0c;生成方式十分简单&#xff0c;总共分两步 画一个正三角形将正三角形的每个边三等分&#xff0c;然后以中间的那份为边&#xff0c;再画出个三角形。重复第二步。 …

关于科赫曲线和科赫雪花的讲解

这是我的第2篇文章。在讲新内容之前&#xff0c;我先要把以前递归函数没讲完的继续讲解&#xff1a; &#xff08;recursion&#xff09;就是在运行的时候调用自己&#xff0c;构成递归需具备的两个条件&#xff1a;一个就是调用自己&#xff0c;一个是有终止的条件。这两个条…

sql中的函数取余数

整数中取余数 前言取余数向上取整算法&#xff08;此非彼&#xff09;函数 sql语句 前言 向上取整&#xff0c;向下取整&#xff0c;或者换句话说 &#xff1a;有余数就1 &#xff0c;没有就直接输出整数。 举个例子&#xff1a; 就比如一页10个&#xff0c;我21个数据&#x…