Python学习记录4(语句)
2016-08-14 15:21
232 查看
赋值语句
序列解包
条件语句
语句块
布尔变量
条件执行和if语句
条件运算符
循环
while语句
for循环
迭代工具
跳出循环
break
continue
while truebreak语句
循环中的else子句
轻量级循环列表推到
passdelexec
小结
Python还可以链式赋值。也可以进行增量赋值。
除去上面的表达式之外的其他表达式在作为布尔表达式的时候都为真。bool函数可以用来转换其他值为布尔值。
语句elif
elif是else-if的缩写。如下例:
嵌套
分析:
字符串和序列也可以比较,他们是按照字母顺序排列进行比较(一个字母的顺序值可以用ord函数查到,ord函数和chr函数的功能相反)。如:
其他的序列也可以用同样的方式比较,不过比较的不是字符而是其他类型的元素。如果一个序列中包含其他序列元素,比较规则也同样适用于序列元素。
布尔运算符
所有的返回值都可以看作是布尔值,所有表达式也都返回布尔值。
布尔运算符有一个有趣的特性:只有在需要求值是才进行求值。
上面这种运算方式被称为逻辑短路(short-circuit logic)或惰性求值(lazy evaluation)。
一个重要的表达
如果b为真,就返回a,否则返回c.
字典中项的顺序是不确定的,在字典循环的时候,可以保证所有的项都可以被循环,但是循环的顺序确实不确定的。上面的例子就说明了这点。
并行迭代
程序可以同时迭代两个序列。这可以通过程序来实现,也可以直接利用zip函数来实现。如下:
按索引迭代
enumerate函数可以在提供索引的地方迭代索引-值对。
翻转和排序迭代
reversed和sorted函数作用在任何序列或可迭代对象上,不是原地的修改对象,而是返回翻转或排序后的版本。
break
break用来跳出循环,执行循环后面的语句。
continue
continue用来结束当前迭代,进行下一步迭代。他的意思是:跳出剩余的循环体,但是不结束循环。
while true/break语句
while true部分实现了一个永远不会停止的循环,但是在内部if语句的条件成立的时候会停止。
循环中的else子句
for、while循环中都可以使用continue、if、else、break语句。
del不仅移除一个对象的引用,也会移除对象本身。 注意,这里删除的是名称,而不是内存。所以,当有两个或者以上的名称指向同一块内存时,删除其中一个或者几个名称,并不会删除内存(值)本身。
导入 有些时候可以利用
赋值 通过序列解包和链式赋值功能,多个变量值可以一次性赋值,通过增量赋值可以原地改变变量。
块 块是通过缩排使语句成组的一种方法。它可以在条件或者循环语句中使用。块也可以在函数或者类中使用。
条件 条件语句可以通过判断条件的真假来决定一个语句到底是执行还是不执行。几个条件语句可以串联使用,也可以嵌套使用。还有一个条件表达式
断言 断言就是肯定事物为真。
循环 在条件为真的时候不断的执行某一语句块。可以配合continue、break、if、else等语句使用。
列表推倒式 它不是真正的语句,而是看起来像for循环的表达式。通过列表推导式可以通过已知的列表产生新列表。
序列解包
条件语句
语句块
布尔变量
条件执行和if语句
条件运算符
循环
while语句
for循环
迭代工具
跳出循环
break
continue
while truebreak语句
循环中的else子句
轻量级循环列表推到
passdelexec
小结
赋值语句
赋值语句用赋值运算符=来实现。赋值语句有一些特殊的使用技巧。
序列解包
多个赋值操作可以同时进行。也可以交换两个或者多个变量。事实上,这里所做的事情叫做序列解包或者叫递归解包——将多个值的序列揭开,然后放到变量的序列中。popitem方法将键-值作为元组放回。>>> scoundrel={'name':'Robin','girlfriend':'Marioon'} >>> key,value=scoundrel.popitem() >>> key 'name' >>> value 'Robin'
Python还可以链式赋值。也可以进行增量赋值。
条件语句
语句块
语句块并不是一种语法。语句块适当条件为真时执行或执行多次的一组语句。在代码前放置空格来缩进语句即可创建语句块。块中的每行都要缩进形同的量。在Python中,冒号用来表示语句块的开始,块中的每个语句都是缩进的(缩进的量相同)。当回退到和已经闭合的块一样的缩进量时,就表示当前块已经结束。布尔变量
下面的值在作为布尔表达式的时候,会被编译器看作是假(false):False、
None、
0、
""、
()、
[]、
{}
除去上面的表达式之外的其他表达式在作为布尔表达式的时候都为真。bool函数可以用来转换其他值为布尔值。
条件执行和if语句
一个例子if-elsename=raw_input('What is your name ?') if name.endswith('Gumy'): print('Hello,Mr.Gumy!') else: print('Hello,stranger!')
语句elif
elif是else-if的缩写。如下例:
num=raw_input('Enter a number:') if num>0: print('This is a positive number.') elif num==0: print('This number is zero.') else: print('This is a negative numeber.')
嵌套
name=raw_input('what is your name?') if name.endswith('Gumy'): if name.startswith('Mr.'): print('Hello,Mr.Gumy') elif name.startwith('Mrs.'): print('Hello,Mrs.GGumy') else: print('Hello,Gumy') else: print('Hello,stranger')
条件运算符
比较运算符表达式 | 描述 |
---|---|
x==y | x等于y |
x | x小于y |
x<=y | x小于或等于y |
x>y | x大于y |
x>=y | x大于或等于y |
x!=y | x不等于y |
x is y | x和y是同一个对象 |
x is not y | x和y不是同一个对象 |
x in y | x是y容器(序列、字典)的成员 |
x not in y | x不是y容器的成员 |
==和
is是两个不同的运算,
==用来判断两个表达式的值是否相等,而
is用来判断两个表达式是否是同一个对象(相同的内存)。如下例:
>>> x=[1,2,3] >>> y=[2,1] >>> x==y False >>> del x[2] >>> y.reverse() >>> x==y True >>> x is y False
字符串和序列也可以比较,他们是按照字母顺序排列进行比较(一个字母的顺序值可以用ord函数查到,ord函数和chr函数的功能相反)。如:
>>> 'alpha'<'beta' True
其他的序列也可以用同样的方式比较,不过比较的不是字符而是其他类型的元素。如果一个序列中包含其他序列元素,比较规则也同样适用于序列元素。
>>> [1,2]<[2,1] True >>> [1,2]>[1,3] False >>> [1,[2,[3,4]]]>[2,1] False
布尔运算符
所有的返回值都可以看作是布尔值,所有表达式也都返回布尔值。
and运算符就是所谓的布尔运算符。它连接两个布尔值,并且只有当两个布尔值都为真时,表达式才为真。另外两个布尔运算符是
or和
not。
or表示或者,当两边值都为假是才为假。
not表示非,表示取与运算表达式真值相反的值。
布尔运算符有一个有趣的特性:只有在需要求值是才进行求值。
x or y当x为真时返回x的值,否则返回y的值。
x and y当x为假时返回x的值,否则返回y的值。
上面这种运算方式被称为逻辑短路(short-circuit logic)或惰性求值(lazy evaluation)。
一个重要的表达
a if b else c
如果b为真,就返回a,否则返回c.
循环
while语句
while语句非常灵活,它可以用来在任何条件为真的情况下反复执行一个代码块。sum=0 x=1 while x<=100: sum=sum+x x+=1 print(sum)
for循环
有时候要求按照一定次数迭代,这个时候要用for来实现。(当然,利用while也是可以做到的。)如果能用for循环,就尽量不用while循环,这是因为for循环的语法更简洁。words=['this','is','an','ex','parrot'] for word in words: print(word) for number in range(1,101): print(number) d={'x':1,'y':2,'z':3} for key in d: print(key,'corresponds to',d[key])
字典中项的顺序是不确定的,在字典循环的时候,可以保证所有的项都可以被循环,但是循环的顺序确实不确定的。上面的例子就说明了这点。
迭代工具
python中有很多很好的用于序列迭代的函数,这些函数位于itertool模块中。并行迭代
程序可以同时迭代两个序列。这可以通过程序来实现,也可以直接利用zip函数来实现。如下:
names=['anne','betah','aymi','cocoa'] ages=[12,23,34,45] aaa=zip(names,ages) for name,age in aaa: print(name,'is',age,'Years sld')
按索引迭代
enumerate函数可以在提供索引的地方迭代索引-值对。
for index,string in enumerate(strings): if 'XXX' in string: strings[index]='[censored]'
翻转和排序迭代
reversed和sorted函数作用在任何序列或可迭代对象上,不是原地的修改对象,而是返回翻转或排序后的版本。
>>> sorted([4,3,6,8,9]) [3, 4, 6, 8, 9] >>> sorted('Hello,world!') ['!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w'] >>> list(reversed('Hello,world!')) ['!', 'd', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H'] >>> ''.join(reversed('Hello,world!')) '!dlrow,olleH'
跳出循环
一般来说,循环会一直执行到条件为假,或者序列元素用完时。但是有时候可能会需要中断一个循环,进行新的迭代,这个时候就需要跳出循环。break
break用来跳出循环,执行循环后面的语句。
from math import sqrt for n in range(99,0,-1): root=sqrt(n) if root==int(root): print(n) break
continue
continue用来结束当前迭代,进行下一步迭代。他的意思是:跳出剩余的循环体,但是不结束循环。
for x in seq: if not(condition1 or condition2 or condition3): do_something() do_something_else() do_another_thing() etc()xxxxxxxxxx
while true/break语句
while True: word=input('Please enter a word:') if not word:break print('The word was:',word)
while true部分实现了一个永远不会停止的循环,但是在内部if语句的条件成立的时候会停止。
循环中的else子句
from math import sqrt for n in range(99,81,-1): root=sqrt(n) if root==int(root): print(n) break else: print('I didn\'t find it.')
for、while循环中都可以使用continue、if、else、break语句。
轻量级循环——列表推到
列表推倒式是利用其他列表创建新列表的一种方式。它的工作原理类似与for循环。>>> [x*x for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [x*x for x in range(10) if x%3==0] [0, 9, 36, 81] >>> [(x,y) for x in range(3) for y in range(3)] [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] >>> girls=['alice','berce','bob'] >>> boys=['chrits','arnold','clarice'] >>> [b+'+'+g for b in boys for g in girls if b[0]==g[0]] ['arnold+alice']
pass、del、exec
pass程序什么都不用做,而让程序通过。del不仅移除一个对象的引用,也会移除对象本身。 注意,这里删除的是名称,而不是内存。所以,当有两个或者以上的名称指向同一块内存时,删除其中一个或者几个名称,并不会删除内存(值)本身。
>>> x=1 >>> del x >>> x Traceback (most recent call last): File "<string>", line 1, in <module> NameError: name 'x' is not defined >>> x='hello,world!' >>> y=x >>> x 'hello,world!' >>> del x >>> y 'hello,world!'
小结
打印 print语句打印多个表达式时可以分别用逗号隔开。导入 有些时候可以利用
import...as...来进行函数的局部重命名。
赋值 通过序列解包和链式赋值功能,多个变量值可以一次性赋值,通过增量赋值可以原地改变变量。
块 块是通过缩排使语句成组的一种方法。它可以在条件或者循环语句中使用。块也可以在函数或者类中使用。
条件 条件语句可以通过判断条件的真假来决定一个语句到底是执行还是不执行。几个条件语句可以串联使用,也可以嵌套使用。还有一个条件表达式
a if b else c.
断言 断言就是肯定事物为真。
循环 在条件为真的时候不断的执行某一语句块。可以配合continue、break、if、else等语句使用。
列表推倒式 它不是真正的语句,而是看起来像for循环的表达式。通过列表推导式可以通过已知的列表产生新列表。
相关文章推荐
- python 学习记录(6)-模块导入/变量/常量/注释/语句分隔
- python学习记录 — (3)条件语句与循环语句
- Python 学习记录1
- 我的SQL语句学习记录
- Python学习笔记整理(八)Python语句简介
- Python学习笔记——控制语句
- [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
- 关于用python的SQLAlchemy访问数据库的学习记录,及SQLAlchemy的安装简介
- Python学习记录——基本概念
- Python学习记录2
- python 学习笔记 while语句(11)
- python学习之语句:循环语句(for,while)
- Python 学习记录(1)对象命名导致的问题
- Python模块学习 ---- logging 日志记录(一)
- SqlServer2005 分页语句,自己简单测试了,感觉速度很快,就记录下来了,便于以后学习。
- python学习手册笔记--第10章--语句简介--第11章--复制_表达式_打印
- python学习记录
- Python学习笔记四:if语句
- Python 学习笔记(一)语句,变量,函数
- 使用Python读取TestTrack记录- Part3 动态生成Linq to xml查询语句筛选条件