Manim教程合集

B站的这些视频来自YouTube,https://www.youtube.com/watch?v=ENMyFGmq5OA。“想知道3Blue1Brown大佬的数学视频是如何制作出来的么?这里是一套Manim的教程合集,完结撒花!”

Python图形化程序设计第6个练习,学习复选框(Checkbox)的使用:

程序代码:

运行结果:

Python图形化程序设计第7个练习,学习绘图(Canvas):

程序代码:

运行效果。点击按钮方框会下移10个像素。

 

 

 

在网易云课堂学习到了以下知识,云课堂地址:
用 python 和 tkinter 做简单的窗口视窗

作者莫烦的主页:https://morvanzhou.github.io/tutorials/
优酷视频主页:http://i.youku.com/i/UMTYyNjI2NDYw

第一个程序,学习生成窗口,按钮和Label:(参看视频:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003649325&courseId=1003216011

运行结果:

第二个程序,学习文本输入框和文本框:(参考:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003649327&courseId=1003216011

结果:

第三个程序,学习Listbox(参考:)

运行结果:

第四个程序,学习RadioButton单选框,(参看:http://study.163.com/course/courseLearn.htm?courseId=1003216011#/learn/video?lessonId=1003651316&courseId=1003216011

程序:

运行结果:

第五个程序,学习拖动条(Scale),(参看:)

程序代码:

运行结果:

 

 

 


附录:

Tkinter 组件

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。

目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

控件 描述
Button 按钮控件;在程序中显示按钮。
Canvas 画布控件;显示图形元素如线条或文本
Checkbutton 多选框控件;用于在程序中提供多项选择框
Entry 输入控件;用于显示简单的文本内容
Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
Label 标签控件;可以显示文本和位图
Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Menubutton 菜单按钮控件,由于显示菜单项。
Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
Message 消息控件;用来显示多行文本,与label比较类似
Radiobutton 单选按钮控件;显示一个单选的按钮状态
Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
Text 文本控件;用于显示多行文本
Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
tkMessageBox 用于显示你应用程序的消息框。

标准属性

标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。

属性 描述
Dimension 控件大小;
Color 控件颜色;
Font 控件字体;
Anchor 锚点;
Relief 控件样式;
Bitmap 位图;
Cursor 光标;

几何管理

Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置

几何方法 描述
pack() 包装;
grid() 网格;
place() 位置;

 

知乎上有个问题:物理专业自学计算机应该学些什么?

题目大概是说他物理本科大四了,申请去美国读物理博士,但自己对计算机有很大兴趣,为了考虑以后的饭碗,想自学计算机。自己对计算机图形学有兴趣,希望得到一些建议。

回答的人不少,有几个人的回答震撼到我了。


第一个回答:

作者:陈然
链接:https://www.zhihu.com/question/23212279/answer/24061341
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

个人站的角度不同,现在的答案基本都是从图形学的角度建议,我换个角度。

从研究生计算机科学做研究的角度来讲,我认为本科最适合的专业首先是物理,其次是数学,再次才是计算机。数学学的太抽象,抽象层次太高,研究现实问题的人往往处在鄙视链的底端。计算机学的太底层,对于概率论、随机过程、线性代数等学科学的太少,不了解建模分析的那套方法论。而物理学一方面的数学知识足够多,另外一方面主要研究的方法也是对这个世界建模,然后进行观测,这与前沿的机器学习领域做的事情几乎是一样的。至于会不会写代码,其实科研里面要写的代码不多,主要都是在推公式,研究如何设计模型使得其拥有很多良好的性质。代码很多时候写写matlab就可以了。

所以恭喜你,如果你想转行做CS的科研,你有很大的优势。事实上,很多CS领域的大神都是学物理的,比如华人图灵奖得主姚期智,CMU Machine Learning领域大神Alex Smola。

如果你真的励志做CS相关的研究的话,物理PhD的选择最好到CS极好的学校,比如UCB, CMU, MIT, Stanford,一般这些学校都可以辅修Machine Learning的Master, 多修CS相关的课程,都是很好的选择。Coursera上的Machine Learning课程都很入门,如果想进阶,你可以看看CMU 10701(Machine Learning), 10702(Statistical Machine Learning), 10708(Probabilitic Graphic Model) 课程的课件、视频、相关阅读和作业,基本都不需要写代码,主要是数学证明、建模和分析。

当然,如果你想做应用而不是做理论什么的,当我以上没说。


第二个回答:

作者:Milo Yip
链接:https://www.zhihu.com/question/23212279/answer/23940891
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

其实在计算机图形学里有很多与物理相关的课题,例如物理模拟(刚体、柔体、流体等)、基于物理的渲染(光源、材质、媒介等),还有一些涉及物理的跨学科课题,例如生物力学、基于物理的声音渲染、光场摄影等等。简单介绍几本书

有空可以看看最前沿的图形学发展,特别是当中涉及物理部分的

看看那些文献的作者网站,可能会发现不少研究者都有物理背景。

我觉得能做理论物理研究的人,其智商做哪种科学问题也不大吧。而计算机科学之本就是算法,无论是哪一个应用方向都是必须的,建议深入学习。个人不建议浪费时间在API、OS、UI编程上面,不竟这些东西许多人都能做,有研究能力的人可以探索新世界。因为游戏、动画、电影这些娱乐工业,计算机图形学的职位在行业上也有需求。


第三个回答:

作者:徐枭涵
链接:https://www.zhihu.com/question/23212279/answer/27455609
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

我是理论物理大二的…给师兄回答这个问题吧。
================================================
当师兄看到很多API繁杂但无从下手,答案是唯一的:多写。
再说说我的建议吧,
掌握一门快速开发语言:强力推荐Python,因为有scipy和numpy存在。可以把这玩意当Matlab用。我做过测试,进行大矩阵乘法numpy的速度比matlab快50%,这二者都比mathematica快20倍…而且python有一个很好的web framework django,结合html css,可以写出不错的网站(比如知乎)如果你是OI的,数据结构神马不用太多虑,直接上计算机图形学吧。
建议可以OpenGL+PhysX(物理引擎)+.NET/Cocoa(win/mac)一起做一个项目,像我做的是一个无人机控制的仿真平台。这个对于学习三这玩意都有效。特别是mvc的构建方式。
另外还有一个很轻巧的构建计算机图形学的方式是webgl,很漂亮。或者直接unity3d(游戏引擎)引擎亦可。
如果你会了html也就是如果你会了javascript,建议入手node-webkit,二十分钟构建一个跨平台桌面应用。对于交互UI我比较倾向于两种,一个是轻量级的html+js的形式,好看简单,一个是unity虚拟现实,我最近做的一个项目就是这两种结合的模式。强力推荐CUDA(GPU计算),物理口必备…想在自己的PC上模拟核聚变CUDA绝对是居家旅行,杀人放火必选。而且CUDA的模型天生是为物理学家设计的。同时需要学点cpp,可以把鄙校丁泽军老师计算物理A书上的习题全部CUDA一遍基本就练习的差不多了
micro.ustc.edu.cnML/DataMining我只看过一些些,这些东西如果自己写算法的话需要用c/cpp如果只是玩玩可以用python+一堆库的方式来搞。主要可能还是数据源吧。嵌入式&单片机,如果不慎入实验物理坑会点单片机嵌入式还是有必要的,入个树莓派玩玩ROS吧。从树莓派+arduino玩的方式入手玩起来很简单无压力,最练手的就是写机器人控制了。这个是从机械折腾到前段的。
树莓派既是典型的嵌入式Arm开发版,优势在于社区庞大。
arduino是一种高度简化后的单片机。比起51等用起来真的简单多了

移动开发:学习学习swift吧。玩玩iOS。。总是觉得Android怪怪的

学习轨迹:
1.熟练使用linux/unix(格式化硬盘一个月内可以生存)
2.选一个自己顺手的IDE(vim/emacs/VS),基本熟练cpp、python(均指一万行代码,可以写写计算物理习题)
3.搭建一个自己的服务器(using aws.amazon.com ec2)
4.写一个桌面app .net/cocoa,(学c#/o-c),在这里折腾OpenGL CUDA等
5.写一个绚烂的个人网站use Django&html5&css3&webgl
6.研究妹子回你短信速度和她对你好感度的关系(使用支持向量机/deep learning)
7.学习CUDA并在你的pc上模拟EAST using MHD model in FEA
(其实能跑出来一个N-S方程出来个卡门涡街就很好了)
8.学习单片机并且控制一架四轴飞行器给那个追了四年没追的女神泼一盆冷水(someone你丫两年以后给我等着)。
可以适当从ROS+树莓派入手,加上一些有意思的硬件比如kinect什么的,就很好玩,推荐学习OpenCV(人脸识别)+讯飞各种接口(语音)。

对了。。。工程控制论,或者什么ML,DataMining的数学比物理口的数学真的是弱爆了。一群不用解偏微分方程的渣渣。

顺便抛我的blog stlover.org(呃最近好像数据库挂了)
就这些差不多了…剩下做点小项目自己也就会了
=====================
操作系统建议看看,就是看看而已。。我大二选了操作系统课最后发现完全没听。
编译原理没有必要,想深入学推荐MIT的计算机结构和解释同时学习LISP


第四个回答:

作者:Joe Physwf
链接:https://www.zhihu.com/question/23212279/answer/102771418
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
如果读完PhD在转计算机,真真是浪费了。计算机对高等物理那些基本不需要,倒是数学是很需要的,但PhD依然是浪费。
那些图形学,虽然涉及到物理,但是最多也是本科就够了,图形学的很多东西都是在投机取巧,那些有颠覆的理论基本上根物理无关,细节的东西都是在拼奇技淫巧。不是不懂物理,而是上帝的高度凡人根本无法企及。你想两面镜子相互反射这种东西,在计算机看来就是无限循环(卡死),但是上帝那里却是realtime的,一点都不卡。
其他很多计算机领域跟物理就更加没有关系了,互联网,大数据,人工智能都没有。如果你对两者都割舍不了的话,那你应该关注计算机基本理论这些东西。你对软硬件结合很感兴趣,但是这些难度不大,而且你一旦了解之后估计很快就失去兴趣了,因为很容易理解掌握。真正难的是计算机物理基础层面的东西,那才是真正软硬结合的地方。半个多世纪之前,贝尔实验室发明了三极管,现在半导体技术已经日渐迟缓了,量子计算机,量子传输这些技术充满想象。当然未来很难说,但发言权在于那些位于基础理论前沿的那些人,很明显你有机会。实用技术有时的确很吸引人,但那些都是细致末节,你穷尽一生改变的只是一枝一叶,并且或早或晚都将坠落。

我的感悟:

第一个回答站在常春藤留学生的视角给出了实用的建议。给我的感觉就是,国外的课程比国内大学的课程领先了太多了,似乎这些课程已经完全成熟和系统化了,而国内还比较杂,很多人还必须去看网络课程来学习。这从一个侧面能看出,国内学生相比国外学生这方面受教育的深度和看问题的视野是有差距的,而且这样网络封闭的话,很不好弥补。

第二个回答罗列了不少书籍,都是物理和游戏、计算等相关的计算机书籍。这类书籍国内也越来越多,不过不得不说的是,大多好的教材,似乎都是外国人写的,中国引入翻译版(书的好坏甚至还要取决于译者的水准)。也就是说,好的教材都是英文的,大家最好学好英文,方便自己掌握知识。这也提醒我们,我们与他们的差距还是很大的。

第三个回答深深震撼到我了。一个大二学生,已经对计算机技术掌握了这么多,真是不简单啊。我感觉他做的事情如果让我去做,没有几年是做不完的。其中他讲到了Python、C#编程,js编程、html、css、javascript(也许他还会java呢),swift,用到了U3D,还会使用SUDA,也玩开源硬件,arm编程,而且非常擅长Python(用Python结合其他框架做了网站,做了GUI编程等)。学习MachineLearning(机器学习)、DataMining(数据挖掘),还会OpenCV、讯飞API。这个答案是答主在2年前回答的,估计现在已经用到了Google、百度的接口(语音接口还是很强大的),做模式识别,可能还有很多我根本没有听过的,也不知道存在的技术。我非常佩服他,

第四个回答比较理性。他简单澄清了物理和计算机的关系,并建议去做最基本的事情。题主感谢了他,而且题主已经走上了计算物理的道路。“我现在业余时间主要关心机器学习方面的东西,因为背后的数学支持挺对我胃口。我自己的科研方向也正是量子计算,我还在尝试涉猎量子计算+机器学习的交叉。”题主这样回答。


我摘下眼镜,停下来想了想。

普通大众忙忙碌碌,做的事情对他们来说可能过于简单了。世界上就是有这么一小部分人,走在人类发展的前列。虽然和大家一样一日三餐,闲了也玩耍逗乐,但静下来的时候,很多人选择看电视打牌睡觉娱乐,而他们选择去钻研他们的兴趣。

上面的只是物理和计算机的话题。其实,无论是摄影,研究昆虫,或者是别的什么,只要是钻进兴趣里了,人生不会太枯燥,追求也就不会太乏味。我不想说谁的生活更有意义,至少,这么些人的其中一些人做的事,会影响很多人。我感觉,他们活着的意义更大一些吧。

5. 自定义功能单元(一)

5.1 使用函数

5.1.1 声明函数

参数列表和返回值不是必须的。return 缺省返回 None。

圆括号和冒号“:”不能省略。

注意,参数列表不需要声明参数类型,只要函数可以计算参数,那就可以调用它。

5.1.2 调用函数

直接输入函数名+参数调用。

参数列表没有声明数据类型,不代表任何数据都可以调用,这要取决于函数内部的算法计算的是什么类型的数据,否则会出错。也就是说,一旦出现问题,只有在程序运行时才能被发现。因此,这就需要慎重处理参数列表,必要的话最好做个强制类型转换。

5.2 深入函数

5.2.1 默认值参数

不传递参数时,参数就用函数定义里的默认值。类似于C语言。

5.2.2 参数传递

两种传递方法:

  1. 按照声明函数时参数的位置顺序进行传递,即位置参数
  2. 按照参数名传递参数值,即提供关键字参数

比如:

运行后得到:
你好, 李雷
Hello, 李雷
你好, 韩梅梅
韩梅梅来啦, 李雷
杰瑞, 汤姆

5.2.3 可变数量参数传递

在参数名前加一个星号“*”,表示该参数为可变参数。比如*a,则参数a为可变参数。可变参数的意思是,调用一次函数之后,函数定义中的参数的默认值就成为刚才调用时传递给它的那个参数值。

举例:

 

python

4. 控制语句执行流程

4.1 if语句

4.1.1 if基础语法

if  <条件>:
    <语句>

条件为真时执行其后缩进的语句,否则跳过缩进语句。条件可以是任意表达式,冒号“:”不能省略。

比如:
x=5
if  x<0:
x=-x
print(x)
运行结果是5。

if  <条件>:
    <语句1>
else:
    <语句2>

条件为真时执行其后缩进的语句1,否则执行else之后缩进的语句2

if  <条件>:
    <语句1>
elif <条件2>:
    <语句2>
else:
    <语句3>

条件1为真时执行其后缩进的语句1条件2为真时执行其后缩进的语句2,条件1条件2都不成立时否则执行else之后缩进的语句3

可以以此类推增添更多的 elseif。

如果执行到某个条件x 成立了,则就执行对应的语句x,然后跳出 if 语句,其后都不会在运行和判断了。

4.1.2 if语句的嵌套

if  <条件A>:
    if  <条件1>:
            <语句1>
    elif <条件2>
             <语句2>
else:
    <语句A>

比如:

建议语句嵌套不要太深,尽量减少嵌套层次,方便阅读和理解程序,但如果逻辑清晰,则不必有意减少。

4.2 for 循环

Python语言的for语句和其他语言很不一样,其他语言(比如C语言)的for语句要用循环控制变量来控制循环,而Python中for语句是通过循环遍历某一序列对象(比如元组、列表、字典等)来构建循环,循环结束的条件就是对象被遍历完成。

4.2.1 for基础

基本语法

for <循环变量> in <遍历对象>:
         <语句1>
else:
         <语句2>

注:for语句的语义是遍历for语句中的遍历对象,每次循环,循环变量会得到遍历对象中的一个值,你可以在循环体中处理它。一般情况下,当遍历对象中的值全部用完时,就会自动退出循环。语句1就是for语句中的循环体,它的执行次数就是遍历对象中值的数量,else语句中的语句2只有在循环正常退出(正常退出是指便利万所有遍历对象中的值)时执行。

4.2.2 if语句与break语句、continue语句

berak:         中断循环的执行,即便依然有未遍历的数据,也会立即终止所有循环。
continue:    终段本次循环,之后的执行语句都不再执行,直接进入下一循环。

比如:

执行结果是:
1
1 的平方是: 1
2
3
3 的平方是: 9
4
4 的平方是: 16
(我们看到,2之后没有执行的语句结果,因为被continue跳过了,也没有5的执行结果,因为被break中断了所有循环了)

字典既有“键”又有“值”,for语句遍历字典时是通过字典的item( )、keys( )、values( )等方法分别遍历其“键和值”、“键”、“值”的。如果要同时遍历键和值,在遍历时可以使用两个循环变量来分别接收键和值。

比如:

运行后得到:
candy : 30
banana : 20
apple : 10
candy
banana
apple
30
20
10

4.2.3 for语句与range( )函数

for语句使用range( )函数可以构建可控循环次数的循环程序。

range( )可以产生数列表,函数原型是: range( [start,] stop [,step] ) 。产生的整数序列的最大值为stop-1 。它并不是在调用时一次生成整个序列,而是遍历一次才产生一个值,以减少内存的占用,其本质是一个迭代器。

  • start 可选参数,起始数,不写的话默认是0
  • stop 终止数,如果range只有一个参数x,那么range产生一个从0至x-1的整数列表
  • step 可选参数,步长

比如:

这个例子是生成10位的大小写加数字的字符串。这是书本的1.7节的2.2练习题的代码。

4.2.4 for语句与内置迭代函数

Python内置了以下几种迭代函数,方便实用。

enumerate(seq)
sorted(seq)
reversed(seq)
zip(seq1,seq2,…)

4.3 用while循环执行语句

用以构造不确定次数的循环结构。

4.3.1 语法

while <条件>:
    <语句1>
else:
    <语句2>

与for循环不同,while语句只有在测试条件为假的时候才停止,否则会无限运行甚至死机。因此必须写好跳出循环的语句。因此,一般都不用while来控制循环,避免出错。但是有时候我们在特定情况下必须用while。

也可以使用elif、break、continue语句。

4.3.2 增量赋值运算符

和C语言的意思一样,有 +=、-=等运算。除此之外,基本的运算符都有其增量赋值运算符:
+、-、*、/、//、**、%、&、|、^、>>、<< 。

用增量赋值运算符时,注意前后变量要是同一类型。

4.4 推导或内涵(list comprehension)

就是对序列中的数据进行处理得到另一组数据序列。

4.4.1 推导基础

典型语法:

[ <i 相关表达式> for i in aiterator ]

aiterator是一个可遍历的对象。

4.4.2 推导进阶

可以使用if语句进行有选择的推导。

python

2. Python起步

2.1 语法基础:

缩进。碎金必须对齐,每次缩进保持4各空格。句子后面无分号,但是在流程控制语句和条件语句后面必须加上冒号 :

单行代码注释用#
多行代码注释用”’ 或 “”” 括起来。

断行,或多个语句放在一行,中间用分号 ; 隔起来。

2.2 输入输出:

用imput() 函数接收输入,比如 name= input(“Please input your name”)
用print()函数显示输出,比如 print(“hello world!”)

2.3 用Python计算:

可以直接用python进行简单计算

输入 3*5/2+4*2
回车计算得到 15.5

Python内置了math模块,里面包含丰富的函数,比如sin(x),cos(x),tan(x),fabs(x)(求绝对值)。使用时需要事先用 import math 语句导入。
使用例子:
>>>import math
>>>x=2
>>>math.sin(x)
0.9092974268256817

2.4 Python能计算大数据

比如199**99(199的99次方),瞬间就能计算出结果。不用事先设定变量类型,而且没有溢出,这是python的一大亮点。

3. Python数据类型

3.1 简单数据类型

3.1.1 字符串str

python中的字符串通常由单引号 ‘ 、双引号 “、三个单引号或双引号包围的一串字符串组成,比如:
‘abc’、’123’、”abc12*、”大家”、”’123abc”’、”””abc123″””。
字符串还可以通过序列号(序列号从0开始)来取出其中某个字符使用,比如’abcde'[1]取得的值为’b’。

里面也包括转义字符,和c语言类似。

字符串也可以运算。+ 号表示连接字符串,* 号表示同一字符串多次连接。字符串也有一些处理函数,比如将第一个字母大写,比如分割字符串,获取字符串长度等,可以查表得到。

3.1.2 整数int

整数可以以进制来书写,默认是十进制。用0+”进制标志”+数字  代表不同进制的数,其中“进制标志”有以下几种:

0o[或0O]数字,表示八进制整数(例如:0O24、0O24)
0x[或0X]数字,表示十六进制整数(例如:0x3F、0X3F)
ob[或0B]数字,表示二进制整数(例如:0b101、0B101)
十进制不用这样写,直接写就行。

整数运算符和c语言一样,包括+-*/
** 乘方
// 整除,比如14//4=3(扔掉余数)
% 取余
| 位或
^ 位异或
& 位与
<< 左移运算
<< 右移运算

算符优先级从高到低如下:
**
* / %
+ –
| ^ & << >>
在同一式子中可以使用括号来控制。

3.1.3 浮点数float

只要写的数小数,则自动就是浮点数,比如3.14、19.、19.1、.098、0.098、-2e3(这是科学计数法,表示-2×10^3)

3.1.4 数据类型转换

数据类型之间可以互相转换,只需要给需要转换的数据前面加上数据类型说明即可,函数如下:

>>>str(23)
23
>>>float(3)
3.0
>>>int(“23.5”)
23
>>>int(“23.0001”)
23
>>>str(23.0001)
23.0001

3.2 字符串进阶

转义字符串,比如\\表示\,\n标识换行。

3.2.1 原始字符串

以 r 或 R 开始,其后的所有 \ 就不用再写为 \\ 了,但是运行后,\ 自动会转义成 \\ ,比如:
>>>r’abc\def’
‘abc\\def
注意,原始字符串不能以 \ 结尾。

3.2.2 格式化字符串

以%开头,对字符串进行格式操作,可以改变字符串的内容,或字符串文字的顺序等。类似于C语言。

%c    单个字符
%d    十进制整数
%o    八进制整数
%s    字符串
%x    十六进制整数,将其中的字母小写
%X    十六进制整数,将其中的字母大写

举例:
>>>print(“%d + %d = %d” % (2,3,2+3))
2+3=5
>>>print(“I am a %s.” % “machine”)
I am a machine.
>>>print(“%s %s %s!” % (“I”,”love”,”you”))
I love you!

3.2.3 中文字符串处理

python3.x默认支持中文,编码为UTF-8。

字符串编码:  encode(encodeing=’utf-8′, errors=’strict’)
字符串解码:  decode(encodeing=’utf-8′, errors=’strict’)

其中encodeing选项还可以是gbk、gb2312等,errors选项可以是strict(报错)、ignore(忽略)、replace(替换)等形式。

3.3 标志符与赋值号

3.3.1 标志符

以字母或下划线开始,对大小写敏感,不能与关键字相同。

比如a、abc、a_、_acd、aK47、bbbb 都是可以的。但是 9a 、0cc 就不行。

3.3.2 “=”

c语言中“=”就是赋值运算符,但在python中,等号“=”的作用是将对象引用与内存中某对象进行绑定。

比如:
x=3         #意思是内存中还不存在3,则在内存中先创建3,并将x与3绑定。此时,x引用3
y=3         #此时内存已经有了3,则直接将y与内存中的3进行绑定。
#此时x与y同时绑定了内存中的同一对象3
y=x+5    #此操作会计算右边值为8,内存中不存在8,先创建8,再将y与绑定到8。

Python是一种动态类型机制的语言,所以变量在使用前不需要定义它的类型,同时,在任何时刻,某个对象引用都可以重新引用一个不同(类型)的对象。python在运行时会对变量类型进行后台检查,只有相同类型的变量才能做同一种计算。

3.4 Python结构数据类型

3.4.1 列表(list)

列表用[ ] 将各种数据类型的数据括起来放到一起,以逗号隔开,类似于一个组合。列表也能包括列表。列表支持乘法运算,乘法的意思就是将该列表重复产生若干次生成若干个相同列表的意思。

比如:
>>>[1,2,’abc’,3+2]
[1, 2, ‘abc’, 5]
>>>a=[1,2,’abc’,3+2]    #运行后不显示结果
>>> a[2]    #2为第3个元素
‘abc’
>>>list()    #产生一个空列表
[ ]
>>>[]    #产生一个空列表
[ ]

列表有很多操作函数。

3.4.2 元组(tuple)

元祖是特殊的列表,不同的是元组建立后不能被改变。与圆括号( )定义。

3.4.3 字典(dict)

字典也类似于列表,只是它是个无序的列表,元素没有顺序这个概念,其成员位置只是象征性的。以“键:值”对的形式存在。用大括号{ }包围元素。在字典中只能通过“键”来访问成员。

比如:
>>> a={‘a’:1,’b’:2,’c’:3.4}
>>> a
{‘c’: 3.4, ‘b’: 2, ‘a’: 1}
>>> a[‘a’]
1
>>> a[1]
Traceback (most recent call last):
File “<pyshell#18>”, line 1, in <module>
a[1]
KeyError: 1

字典也有很多操作函数。

3.5 内置常量与逻辑运算符,比较运算符

3.5.1 常用内置常量

None    #无,常表示没有值的对象; 假。
True    #真
False    #假
0    #假
‘ ‘    #空字符串
[ ]    #空列表
( )    #空元组
{ }    #空字典

3.5.2 逻辑运算符

与 and
或 or
非 not

比如:
>>>0 or 1
1

3.5.3 比较运算符

==   等于
>     大于
<     小于
>=  大于等于
<=  小于等于
!=   不等于

这些运算符和数学上的相同。返回值是True或者False。

3.5.4 其他逻辑操作符

is 和 is not
用来判断左右两边是否是同一个值(同一个引用)

in 和 not in
用来判断元素是不是在某个多成员数据里面(如字符串、列表、元组、字典等)

3.6 序列

3.6.1 序列切片

像字符串,数组等变量其元素都有一定的序列,从左向右以0开始计数(1,2,3,以此类推),从右向左以-1开始计数(-1,-2,-3,以此类推)。

序列片段    形如[start:end:step]来取出来的成员组成的序列就是序列切片。step是步长。切片所取元素从序列的start开始,到end前一个结束,不包括序号为end的元素。

还有其他切片方法。对于元组 alst=[0,1,2,3,4,5,6,7]来说:
alst[:]                #取全部成员数据项
als[0:]               #取全部成员数据项
als[:-1]              #取除最后一个成员之外的所有数据项
als[2:5]             #得到[2,3,4]
als[0:5:2]         #得到[0,2,4]

3.6.2 序列内置操作

les(s)                   #返回s的元素数(长度)
min(s)                #返回s中的最小值
max(s)               #返回s中的最大值
sum(s[,start])  #返回s中的各项的和
all(s)                  #s中所有项为真,则返回真,否则返回假
any(s)                #s中有一项为真,则返回真,否则返回假

注意,min()、max()函数要求序列中的元素能比较大小,sum()则要求元素只能是int或者float类型。

 

 

学习链接:http://www.runoob.com/python/python-variable-types.html

今天开始学习Python,学到了以下内容:

在Windows10下安装Python,配置环境变量。

知道Python 3.0+版本和Python 2.0+的一些不同。

Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。而Python 2.0+ 需要在源文件顶部加入 -*- coding: UTF-8 -*-

python最具特色的就是用缩进来写模块,去掉 { 和 } 。但必须缩进对齐,否则语句不能执行。

Python语句中一般以新行作为为语句的结束符。但是我们可以使用斜杠( \)将一行的语句分为多行显示。语句中包含[], {} 或 () 括号就不需要使用多行连接符。

Python 接收单引号( '  ),双引号( " ),三引号( ''' ) 来表示字符串,引号的开始与结束必须的相同类型的。其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。如:

 

python 中用#做注释,多行注释使用三个单引号( ''' )或三个双引号( """ )。

Python空行起到分隔程序段的作用。虽然不写空格,程序有时候也能运行,但是空格可以起到分隔程序段的作用,比如前面说到的对齐,如果紧接着一行空格,那么空格行之后的语句就不用再与上文对齐。

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割。

Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

在C、Java等语言的语法中规定,必须以分号作为语句结束的标识。Python也支持分号,同样用于一条语句的结束标识。但在Python中分号的作用已经不像C、Java中那么重要了,Python中的分号可以省略,主要通过换行来识别语句的结束。但如果要在一行中书写多条句,就必须使用分号分隔每个语句,否则Python无法识别语句之间的间隔:

分号不是Python推荐使用的符号,Python倾向于使用换行符作为每条语句的分隔,简单直白是Python语法的特点。通常一行只写一条语句,这样便于阅读和理解程序。一行写多条语句的方式是不好的习惯。Python同样支持多行写一条语句,Python使用 “\\” 作为换行符。在实践中,一条语句写在多行也是非常常见的。