python中控制结构_Python语言结构与控制

本文详细介绍了Python编程中的控制结构,包括赋值语句、输入输出、条件判断、循环控制等方面。讲解了赋值语句的复合赋值和链式赋值,以及输入输出中的input()和print()函数。还探讨了标准输入输出、格式化输出和format()函数的使用。在控制语句部分,解释了真值表、成员测试、条件运算、if语句、while循环、for循环、迭代器等内容,最后提到了跳转语句如break和continue,以及其他语句如pass和del。
摘要由CSDN通过智能技术生成

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

一、程序常用语句:

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

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示例')")

如果程序将用户提供的内容作为代码执行,很可能会失去对代码执行的控制,有潜在危险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值