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使用 “\\” 作为换行符。在实践中,一条语句写在多行也是非常常见的。