标签:参数化设计

面向设计师的Python基础教程 —第五课函数 & 面向过程编程

一 函数 在编程语言当中,函数通常是指一段具有特定语法,能够完成特定功能,并且在一定范围内能够重用的程序段。函数功能的出现是计算机语言历史上的一个重大转折,函数给编程带来了模块化、可复用性、可读性、适合并行和易于维护等特点,更重要的是,在我们前面所讲的三种基本程序结构上,函数给程序带来了更为灵活的组织方式,是当代高级计算机语言具备的最基本特征之一。目前仍有很多被广泛使用的计算机语言是基于纯函数思想的例如lisp、Haskell、Erlang等,这些语言只有纯函数,没有类似其他语言的变量和对象。函数式语言和函数式编程思想广泛用于科学研究领域,但并不适合编写与用户互动的应用程序开发。 1函数的定义 在Python中我们已经大量的接触过函数了,例如print()就是一个函数,不过这些函数属于自带的标准函数或第三方库内部函数,除此之外,我们可以在Python 中自定义函数。 在Python中我们使用def关键字来定义一个函数。 def 函数名(参数列表): 表达式 一个函数包含函数名,参数(可为空),函数主体部分,返回值。起语法结构如下,例如我们定义一个求平方函数和一个没有返回值的函数: def square(x): return x**2 def helloworld(): print(‘Hello World’) 其中参数和返回值可以为空,实际上Python传入值和返回值都是None,但是函数的表达式部分不能为空,如果什么也不做用一句pass即可,例如以下为定义一个最小化无任何功能的函数: def a(): pass 2 调用函数 在Python中调用函数一般形式如下,如果函数有返回值,可以给变量赋值。 函数名(参数列表) 变量 = 函数名(参数列表) >>> def square(x): return x**2 print(x**2) >>> square(5) 25 >>> b =... Read More | Share it now!

标签:参数化设计

第四课 循环 & 图灵完备系统

一 循环 我们学了前两种程序执行结构,现在来看第三种:循环。循环是一段在程序中只出现一次,但可能会连续运行多次的代码或代码组。正是由于“循环”的存在,计算机的快速计算能力才真正有了用武之地,否则算法的每一行都需要人工敲进去,那和在纸上进行计算有何异? 通常来讲,程序语言中的循环有两种结构形式:当型、直到型、遍历型循环。Python中没有直到型循环(一般为Do  loop  Until结构,这里就不详讲,请各位自查资料),Python中的当型循环和遍历型循环分别对应为w.hile语句和For语句。 1.1 当型循环 当型循环是在执行循环体前首先进行判断,当条件满足时进入循环,否则结束循环,当型循环也叫“前测试型”循环。在Python当中, 进行当型循环的语句为while语句。其语法形式如下: while 判断表达式: 语句体 注意while为小写,另外while语句也可以带有else字句,当while内的条件不满足时且循环体内没有break语句,会执行else字句内的内容,但这种方法不太常用。 while 判断表达式: 语句体1(不包含break句) else: 语句体2 while语句的执行流程图如下: 注意使用while循环时要思考好判断条件,如果判断条件如果恒为真而在执行语句体内又没有满足某条件跳出的语句时会形成一个死循环,也就是程序将无限循环下去,来看一个使用while循环的简单例子,在屏幕上打印出我们熟悉的斐波那契数列。 我们知道斐波那契数列是一个从数列第三项开始,每一项都等于前两项之和的数列。即A=A+A,这里我们顺便复习一下列表的知识,使用列表来放置这一系列数列,使用list.append()方法来向数组内添加一个元素。代码如下:(1_shulie.py): An_2 = 1 An_1 = 1 shulie = while 1: An = An_2 + An_1 An_2 = An_1 An_1 =... Read More | Share it now!

标签:参数化设计

第三课 Python 基础语法规则 & 条件控制

一 Python基础语法规则 基础语法规则前面已经悉数介绍了一些,这里我们来做一个总结,当然也包含一些前面没有讲到的部分。 1 注释规则 你已经知道了,注释是用于对源代码的解释,再好的编程语言如Python这种可读性极强的语言都是需要在代码内作注释的,注释部分的内容在程序运行时会忽略。Python中注释有两种方法,一种是使用#进行一行注释,另一种是使用””” “””的多行注释。后一种注释一般会用在某个代码文件的开头,用来解释整个代码文件所包含的大致内容。在上节课内容接触很多了,不再举例。 2 语句分行与合行 根据PEP的代码规范,一行代码只能描述一个语句,Python中也提供了将多句代码放于一行,或者将一句较长的代码分成多行编写。 • 多行句子(必须处于同一个层级内,阅读完下面的代码缩进你就懂了)可以用;(分号)隔开放在同一行当中。(其他语言中也有类似方法,例如VB中使用冒号) • 一句太长的句子可用 \ 反斜杠符号分解成多行。 • 用()[]{}这个几个括号扩起来的语句可以跨行 a = 1 ; b = 2 ; c\ =3 a = if (a == b and c == d) 尽管这个方法存在,前者一般不推荐,后者实在句子太长不得已才使用,因为这种方法是不利于代码理解的。有些程序员就是喜欢搞怪,专写混乱的代码,例如下面这个例子,是一个完全可以运行的代码。结果生成一个拼花图案。这样的代码你能读懂么? _ =\ “””if! 1:”e,V=100 0,(0j-1)**-.2; v,S=.5/ V.real, ;w=1 -v”def! E(T,A, B,C):P ,Q,R=B*w+ A*v,B*w+C *v,A*w+B*v;retur n*T+*(1-T)”f or!i!in!_:S =sum(,[])”imp ort!cair o!as!O; s=O.Ima geSurfac e(1,e,e) ;c=O.Con text(s); M,L,G=c. move_to ,c.line_to,c.s et_sour ce_rgb... Read More | Share it now!

标签:参数化设计

第二课 初识Python & 变量的故事

一 Python与PyCharm的安装 1 关于版本 学习Python目前有两个版本可选,Python 2.x和Python 3.x(http://wiki.python.org/moin/Python2orPython3上有较详细的介绍),Python 2.x已经停止开发,最后一个版本为Python 2.7.5,虽然已经停止开发,但这个版本目前应用得最为广泛,Rhino5上的Python版本便是Python 2.7.x(因为IronPython还没有更新到Python 3.x)。Python 3.x的开发代号为Python 3000,相对于Python 2.x有较大的升级,而且并不向下兼容(有一个2to3的脚本,但大部分情况下都不太好用) ,是Python社区目前主要维护的版本和未来的开发方向。虽然Python 3.x目前的第三方库并不丰富,但Python 3.x的改变是朝向更为简洁、更易理解和更为准确的方向,而且相对于最新的Python 2.7.x如Rhino5上的Python 2.7.x,语法和基本库上矛盾的地方不多(从Python 2.6.x开始,开发组就考虑了用户向Python 3.x的过渡),本教程以Python基于目前最新版Python 3.3.2(2013.07.**),因为很多同学学习Python的目的是使用Rhino.Python,因此遇到语法特别之处我会指出。 2 下载和安装Python 如果你使用的是今年发布的Mac OS X操作系统的苹果电脑或者Ubuntu、Red Hat、openSUSE等主流的Linux操作系统,系统里已经预装好了Python 3.x,如果你使用的是Windows 操作系统,你需要下载一个Python副本安装到系统当中,如果你想在Android平板或者Ipad上学习Python那也是可以的,你可以下载Python for IOS和Python for Android。同样还有Sun Solaris、AS/400、BeOS等非主流平台上的版本。因此Python是一个跨平台的计算机语言,一次编写,随处可用,但本教程将基于Windows 7系统。Windows、Mac OS... Read More | Share it now!

标签:参数化设计

面向设计师的Python基础教程 — 第一课 为什么学编程&为什么学Python

一、关于本系列教程 Rhino5时代McNeel推出了Rhino.Python,McNeel不仅老老实实的将原RhinoScript语法全部移植了过去,而且Rhino.Python本身就基于IronPython平台,大有推新除陈之势。IronPython是为了实现在微软.net平台使用Python语言而开发的一个平台,我们知道传统的RhinoSDK工具RhinoCommon便是基于.net平台,因此Rhino.Python不仅能进行类似Rhinoscript的外层建模工具的参数化编程,而且能使用Rhino底层的开发库进行Rhino插件一类的程序开发。因此作为准备以Rhino为主要参数化应用平台的同学们,在掌握Grasshopper之外还想掌握一门代码式编程语言的话,Rhino.Python无疑是你最好的选择。 目前Rhino.Python网络上已经有一些教程,例如原厂出的《RhnioPython101》 ,shaper3d的jorin同学的“跟我读 【RhinoPython 101】系列视频教程”等。但我觉得已有的教程并没有从涉及语言本身的基础性知识开始,一开始就在Rhino平台上进行形态建模的编程,例如《RhnioPython101》只是对《Rhinoscript101》的简单改写。这或许无助与你遇到其他一些算法问题需要解决时的思维问题。 学习编程一定不要眼光只放在一个语言平台上,尤其是学习你第一门计算机语言时,你更需要学习的是算法思维/计算机科学家的思维,这样你学习这门知识才是对你一生有帮助的,保不住明天更为强大一款针对建筑师的参数化平台产生。 因此我的这系列教程打算分成这几个部分,第一部分不会接触Rhino.Python,直接从原生的Pyhton平台和一个优秀IDE(编程平台,具有高亮语法、错误识别、debug等功能)JetBrains... Read More | Share it now!

标签:参数化设计

也谈参数化(上)

08年底,ID名为Foral的一个海外留学生在ABBS上开贴介绍Parametric Design。这是我等之辈认识参数化设计的开始。 而且恐怕除了少数先知先觉者,大多数大陆干这一行的人认识参数化设计多多少少要牵连于这篇帖子。作为一种新的设计手段,参数化目前还作为一种形式化的手段被广泛理解,也有少数作品试图将设计因素参数化作为设计依据,然而终因初始参数控制得太过片面或者太少使得作品说服力不够。那么参数化的产生动因是什么,趋势又将是什么,我来谈谈我的理解。 新的”主义转折点”? 自计算机辅助设计问世以来,设计行业的发展超越了以往历史上的任何时期。然而设计理论并没有因此得到多少更新,计算机在它目前完成大多数辅助设计的使命当中,还仅作为一种高效的表达工具和绘图工具,并没有触及到设计最为根本的东西,譬如设计方法、设计构思。甚至很多设计者对这一工具都带着鄙视的态度,认为滥用它会影响设计者的设计思维。 在参数化出现之前,建筑理论、所谓的”主义”,并没有青睐计算机这个兢兢业业的设计辅助工具,建筑师们努力让自己和哲学、社会学、艺术拉近关系,目前为止,很少会有成功的建筑师宣称,自己的成绩得益于计算机的帮助。然而参数化的设计方法与以往计算机在设计过程中的位置大为不同。如果以原始条件—构思过程—设计结果这一简单的过程来描述一个设计,之前的计算机仅在设计结果上对设计产生帮助。然而参数化的设计方法,计算机的作用已经渗入到构思过程这一阶段之中。计算机正在以更为积极和主动的方式介入到设计当中,其地位也必然得到提升。... Read More | Share it now!