赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN


首页 > 专业技术 > 编程语言 > Python语言结构与控制
Python语言结构与控制

计算机程序一般包括顺序结构、选择结构和循环结构。其中顺序结构是最简单的一种结构,是按照语句的顺序执行,分支和循环是根据一定的条件控制和改变程序执行的顺序,用以完成特定的功能。

一、程序常用语句:
一个程序通常包括数据输入、数据处理和数据输出三个部分,其中输入输出为程序的交互部分,而数据处理是对数据进行操作和运算。

1. 赋值语句:

一个变量通过赋值可以指向不同类型的对象,“=”称为赋值号。赋值号左边必须是变量,右边是表达式,赋值的含义是先计算表达式的值,然后使该变量指向该数据对象。变量可以理解为该数据对象的别名。
Python是动态型语言,即不需要预先定义变量类型,变量类型和值在赋值时被初始化。Python的赋值并不是直接将一个值赋给一个变量,而是通过引用传递。
1)复合赋值语句:
程序中经常会遇到在变量已有值的基础上做修正的运算,其中变量既是运算对象,又是赋值对象,Python提供了12种复合赋值运算符,包括+=、-=、*=、/=、//=、%=、**=、<<=、>>=、&=、|=、^=。其中后面5种是基于位运算的复合赋值语句。
使用复合赋值语句时,右边的运算视为一个整体。比如x*=y+5等价于x=x*(y+5)。
2)链式赋值:
变量1=变量2=......=变量n=表达式
链式赋值用于为多个变量赋同一个值。
3)同步多变量赋值:
变量1,变量2, ......, 变量n=表达式1, 表达式2, ......, 表达式n
其中,赋值号左边变量的个数要与右边表达式的个数一致,首先会计算右边n个表达式的值,然后同时将表达式的值赋给左边的n个变量。
一般要交换两个变量的值需要中间变量,而使用这种同步赋值方式可以在一个语句完成:
a,b=b,a

2. 标准输入语句:

input([提示字符串])
此函数从标准输入设备读取一行数据,并返回一个字符串。示例:
name=input('what\'s your name?')
然后会输出提示字符串what's your name?,可以键入'Tom',这时输入字符串被赋值给变量name。当使用print("my name is "+name+".")后,输出为:my name is Tom.
Python 2.x有raw_input()函数,把读入的数据转换成字符串,而input()函数读入的为数值。

3. 标准输出语句:

Python可以直接使用表达式以输出该表达式的值。但常见的输出方法是使用print()函数:
print([输出项1, 输出项2, ......, 输出项n][, sep=分隔符][, end=结束符])
print()函数可以一次输出多个项目,输出项之间以逗号分隔,没有输出项时输出空行。参数sep表示输出时各输出项之间的分隔符,默认为空格;参数end表示结束符,默认为回车换行符。
1)格式化输出语句:
一些情况下需要格式化输出,就需要使用格式化字符串。格式化字符串由普通字符和格式说明符组成,普通字符原样输出,格式说明符决定所对应输出项的输出格式。格式说明符以“%”开头,后接格式标志符:


代码

含义

代码

含义

%%

百分号

%x或%X

带符号整数(十六进制,用小写或大写字母)

%c

字符ASCII码

%e或%E

浮点数字,科学计数法用小写e或大写E

%s

字符串

%f或%F

浮点数字,用小数点表示

%d

带符号整数(十进制)

%g

浮点数字,根据值的大小自动选择%e或%f

%o

带符号整数(八进制)

%G

浮点数字,根据值的大小自动选择%E或%F

%r

使用repr()函数将其他类型转换为字符串类型

%x.yf

其中x和y为整数,表示总共长度为x个字符,小数部分占y位,还可以在x前加0表示位数不足时补0,前面还可以加-、+,-表示左对齐,+表示在正数前加+号

%(k1)s:%(k2)s

对字典类型指定对应的键k1和k2的值

%*.*f

需要在程序运行中确定字符长度,这个长度在输出项中指定*(x,y,num)

可以直接使用格式化字符串输出:格式化字符串%(输出项1,输出项2, ......, 输出项n),也可以使用print语句输出格式化字符串输出。示例:
print('邮箱地址为:%s%s' %(loginname,mail))
如果组值有两个以上的值,需要是小括号括起来,中间用逗号隔开。
2)format()函数:
format()函数可以将一个输出项单独进行格式化。一般格式为:
format(输出项[, 格式字符串])
格式字符串是可选项,省略时等价于str()。此函数把输出项按格式字符串中的格式说明符进行格式化,基本的格式控制符有:
·d、b、o、x或X分别按十进制、二进制、八进制、十六进制输出一个整数;
·f或F、e或E、g或G按小数形式或科学计数形式输出一个整数或浮点数
·c输出以整数为编码的字符
·%输出百分号
示例:
print(format(15, 'X'), format(65, 'c'), format(3.145, 'f')) # 输出 F A 3.145000
print(format(3.145, '6.2f')) # 输出3.15
格式字符串还可以指定填充字符、对齐方式、符号,其中<表示左对齐、>表示右对齐、^表示居中、=表示填充字符位于符号和数字之间、+表示正号、-表示负号。
print(format(3.145,'0=+10'),format(3.14159,'05.3')) # 输出+00003.145 03.14
print(format('test','^20')) # 居中显示
5)format()方法:
Python 3.x中使用字符串类的format()方法来格式化字符串,调用格式为:
str.format(输出项1, 输出项2, ......, 输出项n)
格式字符串中可以包含普通字符和格式说明符,普通字符原样输出,格式说明符决定对应项的转换格式。格式说明符使用大括号括起来,形式为:{[序号或键]:格式说明符}
其中,可选的序号对应于要格式化的输出项的位置,从0开始,0表示第一个输出项,1表示第二个输出项,以此类推;序号全部省略则按输出项的自然顺序输出;可选的键对应于要格式化的输出项的名字或字典的键;格式说明符同format()内置函数。示例:
'{0:.2f},{1}'.format(3.145,500) # 输出'3.15,500'
其中的格式说明符{0:.2f}中,0表示该格式说明符决定了format中第一个输出项的格式,':.2f'是格式说明符,进一步说明对应的输出项格式化方式,即小数占2位。后面的{1}会传递给format()方法的第二个输出项。其他示例:
print('I\'m {},{}').format('Brenden','Welcome to my space!')
print('{0},I\'m {1}.My E-mail is {2}'.format('Hello','Brenden','brenden@csu.edu.cn')
print('Hi,{nm},{ms}'.format(nm='Brenden',ms='How are you?'))
print({1},{0},{ms}'.format('Brenden','Hi',ms='How are you?'))
print('{0:<15}'.format(1234567890))
print('{0:*^15}'.format(1234567890))
print('{0:10b}'.format(65)) # 以二进制形式输出
print('{0:10x}'.format(65)) # 以十六进制形式输出

二、控制语句:

控制语句决定程序的运行顺序,包括分支语句、循环语句等。为了实现控制,往往要判断表达式的值,这就需要用到一些关系运算、逻辑运算、测试运算等,需要使用真值表。

1. 真值表:
逻辑表达式,常常需要使用逻辑运算符,包括and、or、nor,用于将两个逻辑量连接起来。进行逻辑运算需要使用真值表:

P

Q

P and Q

P or Q

not P

False

False

False

False

True

False

True

False

True

False

True

False

False

True

False

True

True

True

True

False

在计算机内部,以1表示True,0表示False,参与判断的分量也可以是其他类型的数据。一些特殊情况下的真值表为:

表达式

""

"string"

0

1

()空元素

[]空列表

{}空字典

None

返回值

比如,bool('My name is Tom')、bool(45)、bool(" ")解析后得到的值均为True;而bool('')、bool(0)、bool("")、bool([])、bool(())、bool({})解析后得到的值是False。

2. 测试运算:

1)成员测试:
Python支持成员运算符,包括in和not in,in运算符用于在指定的序列中查找某个值是否存在,存在就返回True,否则返回False,格式为x in y。示例:
3 in (8,25,7,3,9)
not in含义为,如果指定的序列中没有找到值返回True,否则返回False。示例:
3 not in (8,25,7,3,9)
2)相同测试:
相同测试使用is,用于测试两个变量是否指向同一个对象。示例:
a is b

3. 条件运算:

Python的条件运算有3个伊运算量,其一般格式为:
表达式1 if 表达式 else 表达式2
运算规则是,先计算if后面的表达式,如果值为True,则求表达式1,并以表达式1的值为条件运算的结果;如果if后面的表达式的值为False,则求表达式2,并以表达式2的值为条件运算的结果。示例:
z=x if x>y else y
条件运算构成一个表达式,可以作为一个运算量出现在其他表达式中,而不是一个语句。使用条件表达式可以简化程序。

4. if语句:

使用if判断的条件语句,返回的结果是True或False,根据返回的结果来决定要执行的代码,常用于对数值或者表达式的比较运算。格式为:
if 表达式1:
    代码块1
elif 表达式n:
    代码块n
else:
    代码块n+1
在if...elif...else条件语句中,需要对应的分句缩进,否则程序执行时会报错。if语句可以嵌套使用,嵌套使用时尤其要主要缩进,否则会出现逻辑错误。

5. while循环语句:

while循环是当指定的条件为true时,循环执行while块中的语句。格式为:
while 条件:
    代码块1
else
    代码块2
其中else语句块是可选的,这部分语句在while执行完成后会执行,但在使用break语句中断循环时则不被执行。

6. for循环:

可以使用for...in循环来遍历几个集合或遍历字典元素等,也可以用于字符串和元组。
for 迭代变量 in 迭代对象:
    代码块1
if 条件1:
    break
if 条件2:
    continue
else:
    代码块2
for语句在后台自动调用迭代器的next方法,捕获stopIteration异常并结束循环。迭代对象可以是序列、迭代器或其他支持迭代的对象。每次循环时,迭代变量表示可迭代对象的当前元素,一次循环结束,再表示迭代对象的下一个元素,直至所有元素迭代完毕。示例:
⑴对集合:
array=['a','b','c','d','e']
for alpha in array:
    print(alpha)
⑵对字典:
value={'key1':'a', 'key2':'b', 'key3':'c', 'key4':'d', 'key5':'e'}
for key in value:
    print('键为:'+key+'==>对应的值为:'+value[key])
⑶对字符串:
string='this is a string'
for s in string:
    print(s)
⑷对元组:
group=[(1,2),(3,4),(5,60)]
for (a,b) in group:
    print(a,b)
如果代码改为:
for a in group:
    print(a)
输出方式与上面的有差别。

7. 迭代器:

for循环还可用于任何可迭代对象。可迭代对象都有一个next方法,调用后会返回下一个条目,所有条目迭代完成后会引发stopIteration异常以结束循环。
1)文件迭代器:
对于已经打开的文件对象,具有readline和next两个方法,其中readline方法是从文件中一次读取一行文本,到文件尾返回空字符串;next方法到文件尾时引发异常StopIteration。
示例:
for readline in open('forgroup.py'):
    print(readline)
2)iter()内置函数:
iter()函数可以返回一个迭代器,然后就可以使用迭代工具将其输出。示例:
array=['a','b','c','d','e']
for alpha in iter(array):
    print(alpha)
3)range()函数:
可以使用range()函数对两个列表进行迭代。示例:
names=['tom','john','marry','alan','nell']
ages=[22,19,23,24,20]
for i in range(len(names)):
    print(names[i],'的年龄为:',ages[i])
4)zip()函数:
使用zip()函数可进行并行迭代,zip()函数把两个序列压缩在一起,返回一个元组列表。
names=['tom','john','marry','alan','nell']
ages=[22,19,23,24,20]
for name,age in zip(names,ages):
    print(name,'的年龄为:',age)
5)enumerate()函数:
用enumerate()函数进行编号迭代,在提供索引的地方迭代索引值对。示例:
fruits=['apple','peach','pear','plum','grapy','litchi']
for index,fruit in enumerate(fruits):
    print(fruit)

8. 跳转语句:

在使用while或for语句时,想提前中断该循环,需要跳转语句。
1)break语句:
循环语句中break表示会跳出整个循环,在嵌套循环中break表示跳出此嵌套循环。
2)continue语句:
continue语句结束当前迭代,立刻跳到循环顶端。

9. 其他语句:

1)pass语句:
类似一个占位符,什么事都不做。
2)del语句:
用来删除不再使用的对象的名称。格式:
del name
也可以作为函数使用del(name)。
3)exec语句:
用来动态创造Python代码,然后将其作为语句执行,新版本中是作为函数使用。示例:
exec("print('exec示例')")
如果程序将用户提供的内容作为代码执行,很可能会失去对代码执行的控制,有潜在危险。

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659