Python学习之控制流部分

0) 引论

前面介绍了基础数据部分,本节将总结一下Python的控制流。有了基础数据以及控制流,则就可以写出一些初步的程序。可以说语言通用的部分就是基础数据和控制流,这两部分构成了一门语言最最基本的部分。控制流主要有顺序结构,if结构,循环结构。下面一一介绍。

1)赋值语句

>>> x=1
>>> x
1

除了最基本的赋值语句形式:x=1; Python还支持链式赋值,如下面所示:

>>> x=y=z=1
>>> x
1
>>> y
1
>>> z
1
>>> x,y,z=1,2,3
>>> x
1
>>> y
2
>>> z
3

而且Python中交换两个变量的值非常简单

>>> x,y=4,5
>>> x,y=y,x
>>> x
5
>>> y
4

这样的赋值方式让Python变得简单明了,但是个人觉得这些方式略显随意,不见得是很严谨的做法。

>>> people={'Arsharm':25,'Bob':13,'Cristina':45}
>>> key,value = people.popitem()
>>> key
'Cristina'
>>> value
45
>>> people
{'Bob': 13, 'Arsharm': 25}
这是字典的链式赋值举例。


Python也有增量赋值的模式,与C是一样的。

>>> x=1
>>> x+=1
>>> x
2

2) 两个运算符的比较(is 和 ==)

>>> x=y=[1,2]
>>> z=[1,2]
>>> x is y
True
>>> x==y
True
>>> x is z
False
>>> x==z
True

x is y 表示x,y是同一个对象。

x==y
表示x,y的数值与顺序都相等。


3) 逻辑运算符
and,or,not是通用的3个逻辑运算符。注意一点,逻辑表达式只有在需要求值的时候才会求值。


4) assert语句
assert语句的设计初衷是能够及时让程序在错误处停止,例如:

>>> x=-1
>>> assert 0<x<10, 'exceed the scope'
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    assert 0<x<10, 'exceed the scope'
AssertionError: exceed the scope

5) 条件语句
前面介绍的内容,基本是一行就能够解决了。然而对于条件语句,循环语句,则一行代码就搞不定了。这里就要用到语句块。在python中,语句块是由冒号和缩进来构成的。


if语句:

>>> if 1>0:
	print('math is true')

	
math is true

if else语句:

>>> num=10
>>> if num>0:
	print(num,'>0')
else:
	print(num,'<0')

	
10 >0

elif语句:

>>> num=10
>>> if num>0:
	print(num,'>0')
elif num==0:
	print(num,'=0')
else:
	print(num,'<0')

	
10 >0

6) 循环语句


while循环:

>>> i=1
>>> ans=0
>>> while i<=100:
	ans=ans+i
	i+=1

	
>>> ans
5050

用for循环:

>>> ans=0
>>> for i in range(0,101):
	ans = ans+i

	
>>> ans
5050

range是内建函数,能够生成一个范围内的序列

>>> range(0,10)
range(0, 10)
>>> list(range(0,10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

跳出循环:break以及continue:

>>> ans=0
>>> for i in range(0,101):
	ans=ans+i
	if i>50:
		break

	
>>> ans
1326

>>> ans=0
>>> for i in range(0,101):
	if i==50:
		continue
	ans=ans+i

	
>>> ans
5000

7) 遍历字典
字典是Python中比较常见的数据结构,下面来看如何遍历字典里所有的键:

>>> dic = {'Arsharm':42,'Bob':23,'Cristina':19}
>>> for key in dic:
	print(key,'is',dic[key])

	
Cristina is 19
Bob is 23
Arsharm is 42

8) 迭代
并行迭代,假设有两个序列

>>> name=['Arsharm','Bob','Cristina']
>>> age=[42,23,19]
>>> for i in range(len(name)):
	print(name[i],'is',age[i])

	
Arsharm is 42
Bob is 23
Cristina is 19

利用内建的zip函数进行迭代

>>> name=['Arsharm','Bob','Cristina']
>>> age=[42,23,19]
>>> for name,age in zip(name,age):
	print(name,'is',age)

	
Arsharm is 42
Bob is 23
Cristina is 19

9) list comprehension
不知道为什么要起这样一个名字,大概是说要对列表进行更加深入的理解吧。
书上翻译说是列表推导式,反正不管他是什么了, 它的主要目的就是利用列表实现一个类似于循环的东西。

>>> [i*i for i in range(0,10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> [n for n in name]
['Arsharm', 'Bob', 'Cristina']
>>> [a for a in age]
[42, 23, 19]

10) 其他的一些有用的语句
pass:什么都不做。pass语句的初衷是为了提前占用位置,以便后续扩展用。
del:删除。注意del删除的是名称,而不是值,在python中时没有办法真正删除值的。

>>> x=[1,2,3]
>>> y=x
>>> del x
>>> x
Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    x
NameError: name 'x' is not defined
>>> y
[1, 2, 3]

结果显示del x后,只是把x这个变量删除,而没有真正的删除值。


exec:执行字符串方式书写

>>> exec("print('Hello World!')")
Hello World!

eval: 计算字符串形式书写的表达式

>>> eval('1+2')
3



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值