其实作为一个设置或者技术指导,学习到一定程度必须要接触编程,比如Mel、Python、C++

Api等程序语言,这些教程主要是转载胡泳滨的Maya

Python学习教程,现在开始第一章-MayaPython教程二之Python。

如果你是Python高手,可以跳过这篇。因为节下来我要讲述Python的基本应用。由于我的Python教程主要是针对Maya的应用,所以Python基本应用的介绍主要会涵盖Maya环境中经常会使用到的Python功能。学习过程中,尽量运用已学到的知识自己也试着编写一些代码,发挥主观能动性。这样学习,效果会十分显著。该篇主要含盖以下内容:

2.1 脚本编辑器(Script Editor)

2.2 Python常用数据类型和操作符

2.3 流程语句

2.4 定义函数

2.5 常用模块

2.1 脚本编辑器(Script

Editor)

Maya界面中有2处地方可以编辑Python脚本,一处是左下角的快速命令行,这个命令行可以在Python和Mel间快速切换,一处是右下角的Script

Editor按钮。

我们的Python代码就是写在Python选项卡中,如果Python脚本在Mel选项卡中执行将会出错,Vice

Versa。

我们在Maya中执行的操作会通过Mel语言打印在上面灰色区域,也就是输出区域。这些Mel语言都可以非常快地转化成Python代码。这个数据输出区域同时也会打印Python脚本的执行结果以及出错信息。

现在我们来执行一条简单的Python语句,来一个初体验:Python页面中输入print "Hello

Maya",然后按数字键盘上的小回车(注意:小回车是执行代码,大回车是换行)。我们看到输出区域的打印结果如下:

print

“Hello!World!” # 你好!世界!

Hello!World!

第一行是告诉用户,你执行了print

“Hello!World!”这条命令,第二行Hello!World!是执行这条命令的结果,这里的执行结果就是:Hello!World!被打印出来了。命令执行成功。但是我们发觉Python页面里的代码也消失了。如果需要反复执行代码,可以选中需要执行的代码,然后按小回车,这样,我们可以在执行代码的同时保留页面里的代码。(建议使用第二种方法执行代码)

接下来,再举个简单的例子来说明输出窗口中的报错信息。随意在命令行中输入一些字母Hello!World!,然后执行,出现如下信息:

Hello!World!

#

Error:NameError:name ‘Hello!Word!’ is not defined #

这是个简单的报错信息,说明abcd没有被定义,电脑无法识辨。这条命令是无效的。

最后就是#符号,#后的所有的代码(换行前)都被看作注释,不参与运算。例如:

# print

“Hello!World!”

虽然也是print命令,但是前面有#,所以无视。

现在我们终于知道如何在Python中执行代码,以及辨别代码是否有效。在下面的教程中,我将会用一些简单的实例来展示Python的常用功能!

2.2

Python常用数据类型和操作符

数据类型就是数据的类型,就是不同类型的数据,数据类型包括:整型,浮点,字符,列表,元组,字典。

整型(Int)就是整数,比如:1,2,3,21,1000......

浮点(Float)就是带小数点的数字,比如:1.12,4.5......

字符(String)就是文字,需要用单或双引号,比如:“HelloWorld”,“Hello”,“12”,“3.1415”,“#_%)”

列表(List)就是一系列数据的组合,用中括号,比如:[1,2,3],[“HelloWorld”,“Jerry”],[“Marry”,14]

元组(Tuple)用小括号,和列表的区别是他是不可变的:(1,2,3),(“HelloWorld”,“Jerry”),(“Marry”,14)

字典(Dict)用大括号,其中每个元素都有一一对应的值:{“Text”:“HelloWorld”,

“Gender”:“Male”}

操作符,形象的说就是用来操作数据的工具,包括数学操作符,比较操作符,逻辑操作符。

数学操作符:+(加) -(减) *(乘) /(除)%(取除法余数)**(乘方)

比较操作符:(大于)>=(大于等于)==(等于)!=(不等于)

逻辑操作符:And

Or Nod

下面来做一些热身,在实际运用中体会不同数据类型之间的配合!

2.2.1

整数

a = 1 # 定义变量a,把整数1赋予给a

b = 3 # 定义变量b,把整数3赋予给b

a + b

运行结果为3,其他整数小数的加减乘除这里就不熬述了~

2.2.2

字符

name1 = “HelloWorld” #

定义变量name1,把字符HelloWorld赋予给name1,注意双引号

name2 = “Jerry” #

定义变量name2,把字符Jerry赋予给name2,注意双引号

name1 + name2

运行结果为“HelloWorldJerry”,这里说明字符之间可以相加。但是不同数据类型之间不可以相加,变量a和变量name1就不可以相加,因为一个是整数,一个是字符。字符单引号和双引号的不同用法我会再之后的实例中写出。

2.2.3

列表

list1 = [1,2,3] # 定义列表list1,包含3个整型数字

list2 = [“HelloWorld”,“Sphere”,“Plane”] #

定义列表list2,包含3个字符

list = list1 + list2

运行结果为[1,2,3,“HuYongbin”,“Sphere”,“Plane”],可见,包含不同数据类型的列表之间可以相加我们可以对列表中的数据进行访问操作。执行以下命令:

list[0] + list[2]

运行结果为4,因为list[0]指的是list列表中的第一项,list[2]指的是list列表中的第3项。(注意,Python数数是用0开始的),依次类推,list[4]指的就是“Sphere”。

list[3] *

list[1]

运行结果为“HelloWorldHelloWorld”,其效果等同于“HelloWorld” *

2,可见,字符和整数间,可以做乘法运算。同样,如果“c” * 5的运算结果就是“ccccc”。

user1 =

[“HelloWorld”,“Cat”]

user2 =

[“Jerry”,“Mouse”]

userInfo

= [user1,user2] # 定义列表userInfo,该列表内又嵌套了2个列表

print

userInfo # 打印userInfo

运行结果为[

[“HelloWorld”,“Cat”],[“Jerry”,“Mouse”] ],我们看到大列表中包含了2个小列表。

我们同样可以访问嵌套列表:

userInfo[0]表示userInfo中的第一个列表user1,userInfo[0][1]表示user1中的第2个值“Cat”。同样,如果要访问“Jerry”,你可以通过userInfo[1][0]来访问。

我们还可以对列表里的内容进行添加或移除:

userInfo.append([“Jack”,“Male”])

这样我们再次打印userInfo的时候,得到的结果应该为[

[“HelloWorld”,“Cat”],[“Jerry”,“mouse”],[“Jack”,“Male”] ]。

userInfo.remove([“HelloWorld”,“Cat”])

这样我们再次打印userInfo的时候,得到的结果应该为[ [“Jerry”,“Mouse”],[“Jack”,“Male”]

]。

列表和字符还可以访问其区间的数据:

a

= [1,2,3,4,5,6,7,8] # 定义列表a

b

= “HelloWorld” # 定义字符b

a[3:5] # 返回的值是[4,5,6],是列表a的第4位到第6位

b[1:4] # 返回的值是“ello”

a[3:] # 返回的值是[4,5,6,7,8],从第4位一直到结尾

b[:-4] # 返回的值是“Hello”,从第1位到倒数第4位

2.2.4

字典

dict = {“Name”:“HelloWorld”,“Blog

Link”:“http://blog.sina.com.cn/u/2263956242”,“Gender”:“Male”} #

定义字典

dict[“Name”] # 读取关键字Name,返回值为字符HelloWorld

dict[“Height”] = “Can not tell you”# 在字典里添加新的关键字Height,其值为Can not

tell you

字典里关键字的值可以是字符,也可以是整数,小数或者列表。

dict[“MyFavorit”] = [“Music”,“Painting”,“Photography”,“Travel”] #

添加新关键字,其值为列表

print “I am crazy on ” + dict[“MyFavorit”][2] +

“recently”

结果为“I am crazy on Photography recently”。

在处理相对复杂的数据时,字典是个非常重要且有效的数据类型。

2.2.4

常用工具

接下来,我给大家介绍一些不同数据类型中的常用工具!

2.2.4.1

+=操作符号

a

= 1

a

+= 1 # 等同于a = a + 1

运行结果为2,因为a = 1,a +

1等于2,然后把2这个数字赋予给原来的a,这样,2就替换掉原来的1了,a就等于2。

2.2.4.2

pow()乘方命令

x = pow(4,3) #

就是4的3次方

y

= pow(4 ,-2) # 也就开根号

2.2.4.3

len()获取长度命令

len()命令能够返回字符和列表的长度,如下:

len(“HelloWorld”) # 返回结果是10

len([1,2,6]) #

返回结果是3

len([[1,2,7],[“Lock”,“Jack”][“Bach”,“Davinci”,“HelloWorld”]]) #

返回结果为3,因为里面包含3个列表。

2.2.4.4

int()str()数据类型转换命令

int()和str()是字符和整数转换的命令,非常实用:

a

= 256

b

= int(“256”) # 把字符“256”转换成整数256

a

- b # 运行结果为0

c

= “Maya”

d

= str(2011) # 把整数2011转换成字符“2011”

c

+ d # 运行结果是“Maya2011”

2.2.4.5

max()min()最大值最小值命令

max()和min()可以用来比较数字的大小:

max(1,7) # 结果为7,两个取大的值

min(3,6) # 结果为3,两个取小的值

2.3

流程语句

2.3.1

if语句

if就是如果的意思,是条件判断语句的关键词,一般可以和elif或else语句结合使用。接下来我会用一些简单实用的例子来说明if语句的用法:

age = 17 # 定义age等于17

if

age < 18: #

假设第一种情况,注意要用冒号

print “you are not adult” # 注意代码缩进

else: #

假设第二种情况,注意冒号

print “you are adult”

这里的运行结果是“you are nod

adult”,因为假设第一种情况是成立的。这里提一提代码缩进,缩进就相当于写作文时每小节开头要空2字;代码缩进,就是指被缩进的代码是上一行代码的子代码。

name = "HelloWorld" # 定义name变量

if name

== "HelloWorld": # 注意这里是“==”,不是“=”

print “Hello!World!”

运行结果是打印“Hello!World!”。“==”和“=”的区别是:“=”相当于是个动词,把“Hello!World!”这个字符值传递给变量name;“==”表示一种状态。if

name ==

“Hello!World!”这句话翻译成人类的语言就是:假设name的值等于“Hello!World!”这个状态是成立的。(一旦成立就执行后面的语句……)

a = 3

if a

< 1: # 假设1

print “a < 1”

elif a ==

1: # 这里出现了假设2

print “a = 1”

else: #

如果两种假设都不成立的话......就执行下面的语句

print “a > 1”

运行结果是“a

> 1”。很显然,a不小于1,也不等于1,那就只有执行else后面的语句了。

2.3.2 for循环语句

for语句的操作对象一般是一个序列,对序列中的每一个成员进行操作,举例:

seq =

[1,2,3] # 定义一个列表

for i in

seq: # for即将对列表seq中的每个成员进行操作,成员我们用i来代替(这里成员变量可以自定义)

print i + 1 # 操作的内容:给每个成员 + 1

执行结果如下:

2

3

4

我们给每个成员都

+ 1了。

说到for循环语句,我们不得不提一下range()内置函数。range()可以针对数字提供一个序列范围:

range(10)

运行结果就是:[0,1,2,3,4,5,6,7,8,9]。

range(5,10)

运行结果就是:[5,6,7,8,9]。

range(0,10,2)

运行结果就是:[0,2,4,6,8]。

结合for语句,我们可以尝试执行以下代码:

x =

[“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”]

for i in

range(0,10,2): # 操作范围:[0,2,4,6,8]

print x[i] # i将会被[0,2,4,6,8]中的每一项一次替代,替代后在执行print语句

运行结果:

a

c

e

g

2.4 定义函数

在Python中,我们可以自己定义一个函数,定义函数的命令是def,如下:

def

MyFirstFunction():

print “this is my first function”

这里我们用def命令定义了一个函数名字叫MyFirstFunction,后面括号里面是用来填写参数的,如果没参数,就留空。定义函数内的代码需要缩进。如果要执行函数,操作如下:

MyFirstFunction() # 这样输入,就可以执行函数,函数内所有命令都会被执行

执行后,结果会打印“this is my first function”,说明定义函数内的代码被正确执行了。

函数还有一种定义方式,就是在括号里加上一些参数:

def

MySecondFunc(a,b): # 该函数包含了a和b两个参数

print a + b

然后我们来执行这个函数:

MySecondFunc(2, 5) # 把2和5分别代入a和b,然后执行,函数内的print命令会被执行。

运行结果为7。

MySecondFunc(“first”,“second”)

运行结果为"firstsecond",两个字符串被相加了。

函数还可以签套函数,如下:

def

func1():

a = 1

print a

def

func2():

b = 2

print b

func1()

定义好func1和func2后,执行func2(),结果为:

2

1

因为func2先执行打印b,在执行func1,func1会打印a。

2.5 常用模块

简单说,模块就是一个打包的命令集合,以文件的形式存在。模块的使用方法是“导入”。我们直接针对Maya

Python的模块来具个简单的例子吧。

2.5.1 Maya模块

import

maya.cmds # 导入Maya模块中的Cmds命令集

这样,我们就在Maya中导入了Cmds命令集,里面包含了所有可以在Python环境中使用的Maya命令。现在我们来初试这个Cmds命令集。

import

maya.cmds # 导入模块

maya.cmds.polyCube() # 调用模块中的polyCube命令。

发觉场景里生成了一个方块,命令执行成功。

但是这样打命令太长了,我们在导入maya.cmds时加上:

import

maya.cmds as mc

这样maya.cmds就作为mc导入了,我们就不用再打长长的maya.cmds了。我们再创建一个Cube:

mc.polyCube()

短很多了吧。接下来介绍几个常用的模块:

import

maya.mel # 导入这个,可以调用所有的Mel命令

2.5.2 Os模块

Os模块也是用的比较多的。我经常会使用os.system(),括号中间可以写一些Dos命令:

os.system(“md C:\MyFolder”)

这样就可以用Python来调用Dos命令了。

os.listdir(“C:\”)

Listdir可以以列表的形式列出路径中的所有的文件和文件夹(注意:是列表的形式,像这样:[‘a.py’,

‘AUTOEXEC.BAT’,‘ boot.ini]’)。

接下来再介绍一个Re模块,我经常用它来做字符的切割工具:

2.5.3 Re模块

import

re

a =

“Hello_World”

re.split(“_”,a) # split就是切割工具,有2个参数,“_”就是切割的根据,a是我们定义的变量

返回结果是一个列表,[“Hello”,“World”],还有个是替换命令re.sub():

a =

“my4text4is4hello4world”

re.sub(“4”,“_”,a) # 就是说把4替换成“_”

输出结果:“my_text_is_hello_world”。

2.5.4 Time模块

import

time # 时间模块

time.ctime()

执行结果:#

Result : Fri Jun 11 22:52:16 2010 # 。也就是当前的时间。

OK,Python简易教程就写到这里,简易教程的内容肯定不是很完整,这里只是罗列出一些实战中比较常用的功能。(也是我比较常用的)初学者可以抛弃理论,先玩起来再说。实践太重要了。在下一篇中,我们将正式进入Maya

Python实际应用。

python热身教程_[转载]技术教程-MayaPython教程二之Python相关推荐

  1. php泡点,PHP数据类型_PHP教程_编程技术

    两相篓儿狗盗棉袄崇兴猛药.馆际麦垅蓝带柔情失密泡点前因信使!小孩女监连山麦道抽筋魔神煤窑,不收莽撞库格祖逖拼版!明艳路单板坯瓯绣供养哩数!轻吹梅树爽利轻贱抛洒年鉴插曲蒙医:北城湿病国税漫坡侧板钳子面嫩 ...

  2. 实例教程_次世代兽人制作教程

    实例教程_次世代兽人制作教程 链接:https://pan.baidu.com/s/1sr6VvFHKyfpg1ZlW0ui8PQ 密码:cj85

  3. maya python教程下载_[转载]技术教程-MayaPython教程四之实战篇

    其实作为一个设置或者技术指导,学习到一定程度必须要接触编程,比如Mel.Python.C++ Api等程序语言,这些教程主要是转载胡泳滨的Maya Python学习教程,现在开始第一章-MayaPyt ...

  4. python面试题_面试时全对这25道python面试题,成就了我月薪25K!附教程分享)

    之前面试的时候,面试官拿出一些python面试题对我说,只要全部正确直接给我20K,我一看题目笑了,居然全部都会,今天拿出来给大家分享一下~ 面试时全对这25道python面试题,成就了我月薪20K! ...

  5. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

  6. python编译器入门教程_一篇让你直接入门的 Python 教程

    目录(1)Python是什么?Python属性 (2)获取Python-一个Prelim选择Python版本 (3)如何获得Python? (4)确认Python安装PythonShell (5)语言 ...

  7. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  8. python写炒股软件_在线配资,【原创】用python开发股票自动技术分析的软件(

    一.准备一个沪深股市的股票代码和简称的对照表,存在csv文件或者txt文件中. 二.读取这个文件,循环将所有股票的历史数据都下载到本地,保存为名字为股票代码的csv文件. 三.逐个读取所有这些csv文 ...

  9. 计算机硬件实验教程pdf,计算机硬件技术基础实验教程答案(重庆大学)

    计算机硬件技术基础实验教程答案(重庆大学) 计算机硬件技术基础实验教程答案 实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 ...

  10. javplayer 使用教程_药物设计软件Sybyl教程(五):绘制分子对接后对接表面

    教程内容: 以SYBYL-X 2.0软件为例,进行分子对接(Surflex-Dock)后创建对接空腔的对接表面教程. 1 视频教程 建议在wifi环境下观看~ 2 图文教程 1.打开对接结果 本期教程 ...

最新文章

  1. 使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
  2. SENetSKNet 解读
  3. 向所有的代码小神童学习!
  4. 10067mysql_MYSQL数据库mysql Non-Transactional Database Only(只支持MyISAM)
  5. day028 Tcp和Udp协议
  6. k8s consul 服务发现_Swoft之服务注册发现Consul服务器配置
  7. GDB的工作原理及skyeye远程调试
  8. 点击button自动提交表单原因及解决方案
  9. python中serial模块的使用_python中pyserial模块使用方法
  10. 加密初衷是什么?安全性or实时性
  11. [sed] linux sed 批量替换字符串-转
  12. javascript 字符串中单引号和双引号区别
  13. 购物中心最好的无线AP是什么?
  14. 高德地图H5 定位失败报错 geolocation time out. Get ipLocation failed解决方案
  15. VBA 字典嵌套字典 + 数组
  16. excel数据库_最新技术让excel秒变web数据库
  17. c语言bfs算法走迷宫,使用广度优先算法(BFS)走迷宫
  18. mac自带计算器 进制转换
  19. java全栈系列之JavaSE-面向对象(instanceof关键字与类型转换)039
  20. 每日安全简讯20160721

热门文章

  1. Linux驱动开发(十三)---USB驱动HID开发学习(鼠标)
  2. Oracle数据库备份与还原语句
  3. 人工智能应用案例——智能客服
  4. STM32机器人控制开发教程No.2 霍尔编码器电机测速以及增量式PID控制(基于HAL库)
  5. TerraSolid工具试用系列----TerraSolid系列点云处理软件安装备注
  6. smartdns使用指南_OpenWrt之SmartDNS 使用教程(PW版)
  7. 简述计算机配件选购的一般原则和流程,计算机维护与维修教学全套课件(刘云霞)(已检查完11 18)教学单元五选购与配置计算机.doc...
  8. BIM应用落地:基于BIM的群塔作业方案优化
  9. C++打卡15-【排序模板】冒泡排序
  10. 语音识别字幕_语音识别字幕软件_自动识别语音生成字幕 - 云+社区 - 腾讯云