python大道至简(第二部分)
作者:下家山(qq:1209050967,微信:xiajiashan)
回到 python大道至简(第一部分)
十二:python程序另一种运行方式
12.1 文件格式
Linux命令cat的来历参考《Cat的来历.docx》
12.2 运行方式
Python无需编译即可运行:
注意:必须加上下面这一行才可以执行,这一行的意思是给helloworld.py添加用户可执行权限。
12.3 更简化的运行方式
./表示在当前目录下
十三:我的第一个程序,求圆的面积
问题描述:
给出半径,求圆的面积。
这个问题怎么用python程序实现呢?
变量的打印,必须通过print实现
十四:两种编程方法的比较
第一种
优点:可以在任何地方,用文本写代码,无需终端,编写方便
缺点,需要切换到python终端才可以运行
第二种
优点:可以即时查看代码结果,甚至所见即所得
缺点:必须在python终端下编写,比较局限
但有时候要写大量代码的时候,上述优点却变成了一种缺点
后续代码,如无特殊情况,将采用第一种编写方式,采用这种方式有更多的优点呈现!
十五:获取用户从键盘输入的内容
问题描述:
在我的第一个程序(第十三节中),求圆的面积,我们程序中的半径是定死的
那有没有什么办法,可以实现,半径让用户输入,只要用户输入了半径,程序马上返回圆的面积呢?
Python当然可以,那就是从键盘获取用户输入。
Input功能解析
十六:让我们的程序支持中文
在上面的程序中,全是英文,特别是提示语句也是英文,让一天到晚跟中文打交道的程序员,看起来好像不够亲近。
如何实现中文显示呢?
比如这样:
但是,当我们执行的时候,发现出错
百度的解决方案
改过之后的结果
再百度….
什么是utf-8,什么是gbk请参考
http://blog.****.net/zzxian/article/details/7330804
十七:如何从input获取多个值
注意:用户输入一定要以逗号隔开(,),否则出现下列现象。
十八:再议print——格式化输出
如果要在输出结果前面有个提示语句怎么办
18.1 十进制数值输出
输出多个变量
%d表示十进制输出,%S表示要输出的变量,他们中间不能有逗号(,)。
进一步的说明见20.1.1和20.1.2
18.2 字符输出
68以16进制输出(%x)是什么?
68以8进制输出(%o)是什么?
68以2进制输出(%b)是什么?
68以字符输出(%c)是什么?
十九:判断语句
19.1 求三角形的面积
问题描述:
给出三角形的三条边,求其面积。
提示:
Python的开根号函数sqrt。
你需要判断三角形三边的关系,a+b>c,即任意两边之和大于第三边。
19.2在命令下实验结果:
19.3 Python程序实现如下:
19.4 怎么加入三角形三条边的非法判断
不合法的判断:
程序改过后
19.5 python条件语句总结
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if判断条件:
执行语句……
else:
执行语句……
二十:循环语句
20.1 while语句
问题描述:
求5!。
提示:
求5的阶乘,即5*4*3*2*1
我总觉得不直观,我想最后打印的是形如:5!= 5*4*3*2*1 = 120
20.1.1 print如何去掉自动换行
怎么去掉换行?
去掉了换行,但是,中间夹有空格,怎么去掉空格?
20.1.2 print如何去掉空格
个人练习:怎么实现从键盘输入一个数(需要判断大于0),计算它的阶乘。
20.2 for语句
问题描述:
写程序把字符串’I love python’以单个字符的形式打印出来。
效果如下:
其中,第4行的i表示循环变量,for,in,后面的冒号都是固定格式,而’I love python’是字符串。
第5行的print i,逗号表示不换行,并且循环变量i会自动累加。
个人练习:如何实现延时效果
20.2.1 for循环格式
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
语法:
for循环的语法格式如下:
for i in sequence:
statements(s)
流程图:
20.3 range函数
Range函数经常与循环语句配合使用。
问题描述:
我们要实现1+2+3+4+5+。。。+100的和,怎么用python代码实现?
提示:
我们知道1+2+3+4+5+。。。+100=5050
Range(n,m)函数不包括右边界。所以,没有加100。
4950+100=5050.
第4行,s=0,如果没有,编译会报错,指明第6行s未定义。【变量在使用前必须定义】
个人试试去掉第4行
20.3.1 range函数注意事项
20.4 enumerate函数
For语句实现两个循环变量
列表在后面会详细讲解。
个人练习:打印1-9三角形阵列:
二十一:循环嵌套
Python 语言允许在一个循环体里面嵌入另一个循环。
Python for 循环嵌套语法:
foriterating_varinsequence:
foriterating_varinsequence:
statements(s)
statements(s)
Python while 循环嵌套语法:
whileexpression:
whileexpression:
statement(s)
statement(s)
你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环,反之,你可以在for循环中嵌入while循环。
21.1 for循环嵌套
问题描述:
我们需要在屏幕上打印一个4行5列的阵列*号图
怎么做呢?
所以,要采用双循环,我们先采用for来做
在print后加入逗号去掉自动换行功能!
21.2 while循环
二十二:循环控制语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
控制语句 | 描述 |
在语句块执行过程中终止循环,并且跳出整个循环 | |
在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 | |
pass是空语句,是为了保持程序结构的完整性。 |
22.1 break语句
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
Python语言 break 语句语法:
break
流程图:
问题描述:
我们回顾一下20.2.1节的这个程序,现在要实现的是,让程序碰到字母y的时候跳出循环,该怎么做呢?
解决方法:
注意:第6条语句属于if的语句块,而第7条语句属于for的语句块!
采用while实现的结果
22.2 continue语句
Python continue 语句跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
Python 语言 continue 语句语法格式如下:
continue
流程图:
Continue for语句实例
Continue while语句实例
为什么把第9行语句,放到第6行上面就可以实现了呢?
因为,当i碰到11的时候就不执行第8,第9条语句了,造成i一直等于11。
那问题又来了,既然i一直等于11,但11前面的值应该打印出来啊?这又是为什么呢?
这个原因是行缓冲的造成的。
22.3 flush函数
Flush函数,需要导出sys才可以使用,他的功能是刷新内存缓冲区到输出设备。
22.4 pass语句
Python pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
Python 语言 pass 语句语法格式如下:
pass
什么是占位语句?
我们来看一个实例
如果不用pass占位会出现什么情况呢?
Python把第9行当成了if的控制块,而第9行本来是跟第6行并列作为for语句的控制块的,但是因为我们把第7,8行屏蔽了,所以系统把第9行当成了if的执行语句,但是因为第9行没有缩进,所以造成缩进错误。
二十三:关于缩进
23.1 缩进的思考
参考20.1.2
为什么第一条print语句(第11行)参与while循环,打印多次。而,第二条print语句(第15行)不参与循环只打印一次?
难道是第14行空行的原因?
去掉空行后,没有影响!
难道是缩进的原因?
个人自行实验:缩进1个空格,或3个,4个空格试试
Python的缩进规则参考下面链接
http://www.cnblogs.com/tt-0411/archive/2011/11/11/2245693.html
23.2 缩进的各种情况
代码
运行结果
S=0,为假,所以打印#############
如果不缩进:
如果缩进一个空格:
缩进2,3,4,5,6,7,8,9个空格都可以。
缩进空格不一致也可以,但是不能有不缩进的情况。
风格一样也可以,一个空格,另一个tab。
23.3语句块
其中,语句块可以是一条语句,也可以是多条语句。
问题是:如何控制if语句的语句块包含几条执行语句?
因为6,7都有缩进是If下面的两条执行语句,所以属于if的控制范围;
因为9,10是else下面的两条执行语句,所以属于else的控制范围;
23.4 语句块的控制
那么第8行缩进一个空格是否可以呢?
在同一个语句块里面,缩进空格个数要一致!
在同一个语句块里面,缩进风格要一致。
不同语句块,缩进空格个数内部要一致。
If语句块统一空2个空格,else语句块统一tab缩进也OK
第10条语句以不缩进类脱离else语句块的控制!
23.5 总结
类似If,for,while的语句块缩进规则:
1:一定要有缩进
2:在语句块内一定要统一,不能一个执行语句缩进1个空格,另一个执行语句缩进2个空格;
3:在语句块内风格也必须一致,不能一条语句空格缩进,另一条语句tab缩进
4:最后的独立语句不能缩进