《python基础教程》笔记之 条件语句和循环语句
- 布尔变量
下面的值会被解释器看做假(false):
False None 0 "" () {} []
其它的一切都被解释为真。
>>> True
True
>>> False
False
>>> True == 1
True
>>> False == 0
True
>>> True + False +42
43
bool函数 -- 用来转换其它值,如
>>> bool([])
False
>>> bool('hello,world')
True
- 条件语句
if else elif
is 和 is not -- 判断两个变量是不是同一个对象
>>> x=y=[1,2,3]
>>> z=[1,2,3]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
上例中可见,因为is运算符是判定同一性的。变量x和y都被绑定在同一个列表上,而变量z被绑定在另外一个具有相同数值和顺序的列表上。它们的值可能相同,但是却不是同一个对象。
in 和 not in -- 成员资格运算符
assert -- 当条件不为真时,程序崩溃
>>> x = 5
>>> assert 0<x<10
>>> assert 5<x <4
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
assert 5<x <4
AssertionError
- 循环
range -- 内建范围函数,它包含下限,但不包含上限,如
>>> range(0,10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in range(0, 10):
print num,
结果如下
>>>
0 1 2 3 4 5 6 7 8 9
循环遍历字典,可以使用序列解包,如
d = {'x':1, 'y':2}
for key, value in d.items():
print key, 'corresponds to', value
结果
>>>
y corresponds to 2
x corresponds to 1
zip -- 可以将任意多个序列“压缩”在一起,然后返回一个元组的列表,同时他可以应付不等长的序列,当最短的序列“用完”时就会停止,如
>>> zip(range(5), xrange(10000))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> names=['a', 'b', 'c']
>>> ages = [45, 23 ,98]
>>> zip(names, ages)
[('a', 45), ('b', 23), ('c', 98)]
并行迭代,如
names=['a', 'b', 'c']
ages = [45, 23 ,98]
for name, age in zip(names, ages):
print name, 'is', age, 'old'
结果
>>>
a is 45 old
b is 23 old
c is 98 old
编号迭代 -- 迭代序列中的对象,同时还要获取当前对象的索引,如
names=['Mr.a', 'Ms.b', 'Mr.c']
for index, name in enumerate(names):
if 'Mr' in name:
names[index] = 'nan'
for name in names:
print name,
结果
>>>
nan Ms.b nan
翻转和排序迭代(sorted和reversed) -- 作用域任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本,但是返回对象不能直接对它使用索引、分片以及调用list方法,可以使用list类型转换返回的对象,如
>>> sorted([4,3,8,6,3,])
[3, 3, 4, 6, 8]
>>> sorted('hello, world!')
[' ', '!', ',', 'd', 'e', 'h', '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/continue -- 跳出循环/继续下一轮循环
循环中的else子句 -- 如果循环中没有调用break时,else子句执行,如
from math import sqrt
for n in range(99, 81, -1):
root = sqrt(n)
if root == int(root):
print n
break
else :
print "Didn't dind it!"
结果
>>>
Didn't dind it!
- 列表推导式--轻量级循环
列表推导式是利用其它列表创建新列表的一种方法,如
>>> [(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', 'bernice', 'clarice']
>>> boys = ['chris', 'arnold', 'bob']
>>> [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
['chris+clarice', 'arnold+alice', 'bob+bernice']
《python基础教程》笔记之 条件语句和循环语句的更多相关文章
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- Python基础1:if条件判断 break/continue语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. Python中,if语句被用来进行判断,它的语法结构是: 1 if 判断条件: 2 执行语句…… 3 var = input(" ...
- python基础教程笔记—画幅好画(详解)
今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...
- python基础(二)条件判断、循环、格式化输出
继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...
- Python基础教程笔记——第5章:条件,循环和其他语句
5.1 print和import的更多信息 1. print()3.0之后print不再是语句,而是函数, >>> print('udg',12,13) udg 12 13 &g ...
- .Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]
今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要 ...
- Python基础教程笔记 第二章
本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分.因为元组和列表很多方面都是一样的. 列表和元组的区别:列表可以被修改,元祖不可以被修改. python包含的6种内建序列: ...
- Python基础教程笔记 第一章
/ 表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方 例如 2**3 ...
- python基础教程笔记 第1单元 && 第2单元
1.http://docs.python.org/dev/3.0/whatsnew/3.0.htmlpython-announce-listpython-help2.交互式编译器3.非整数除法 .1. ...
- Python基础教程笔记——第7章:更加抽象(类)
下面进入Python的面向对象: 对象的魔力: 多态:---可以对不同类的对象使用同样的操作 封装:---对外部隐藏对象内部的工作方式 继承:---以普通的类为基础建立专门的类对象 (1)多态: is ...
随机推荐
- 「Poetize10」封印一击
描述 Description Nescafe由n种元素组成(编号为1~n), 第i种元素有一个封印区间[ai,bi].当封印力度E小于ai时,该元素将获得ai的封印能量:当封印力度E在ai到bi之间时 ...
- HiveServer连接优化
引言 数据平台目前通过Hive SQL的方式提供数据分析服务,系统使用多台HiveServer(JDBCServer)接收客户端连接请求,实际使用场景中频频出现HiveServer内存消耗过多导致 ...
- Ubuntu中Samba的安装配置和使用[图文]
Samba服务在Ubuntu服务器版本中默认并没有安装. 1. Samba软件包的安装 使用源安装,在终端中输入如下命令: #sudo apt-get install samba#sudo apt-g ...
- Binary Tree Level Order Traversal II——LeetCode
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- 【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备
背景 硬件要求1:PS3 手柄 + 手柄配套的USB线 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备 软件要求1:Sixaxis Compatibility Checker PS3 手柄 ...
- @Resource 和 @Autowired注解的异同
@Resource 和 @Autowired注解的异同 @Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false 例 ...
- Unity3D NGUI制作的Button放到场景中,按钮从2D变到3D
通常我们使用Button都是在UI界面,即NGUI的摄像机下,如果想换到场景中,即不让按钮以UI形式显现,而是和场景中的物体一起随着摄像机移动而缩小,放大. 很简单,把Button从NGUi的摄像机中 ...
- [Java] Tcp/udp 简单通信
本文转自 我自己的博客guozeyiblog.cn 欢迎来訪 效果图: //UDP通信 import java.awt.*; import java.awt.event.ActionEvent; i ...
- 天圆地方· 围棋界的盲棋天才 -- 鲍云
"鲍云是我心目中继 本因坊秀策,吴清源.武宫正树后第四个我最喜欢的棋手. " 说到盲棋,棋迷们首先想到的绝对是柳大华,外号"东方电脑"的他创造过中国象棋1对19 ...
- Linux下multipath多路径配置
一.什么是多路径 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存 储通过了光纤交换机或者多块网卡及IP ...