python条件和循环的使用方法
前面已经介绍过几种基本语句(print,import,赋值语句),下面我们来介绍条件语句,循环语句。
一.print和import的更多信息
1.1使用逗号输出
A.打印多个表达式,用逗号隔开,会在每个参数之间插入一个空格符:
>>>print"age:",42
age:42
B.同时输出文本和变量值,却又不希望使用字符串格式化:
>>>name="Peter"
>>>greeting="Hello"
>>>printgreeting,",",name
Hello,Peter
上面的例子中会在逗号前加入一个空格,我们可以这样优化:
>>>printgreeting+",",name
Hello,Peter
注意,如果在结尾处加上逗号,那么接下来的语句会与前一句在同一行打印:
>>>print"Hello,",
print"world"
Hello,world
1.2把某件事作为另一件事导入
从模块导入函数时,可以使用:
整个模块导入:importsomemodule
导入其中一个函数:fromsomemoduleimportsomefunction
导入其中几个函数:fromsomemoduleimportsomefunction,anotherfunction,yetanotherfunction
导入全部函数:fromsomemoduleimport*
如果某2个模块都有相同名字的函数,比如叫open函数,那么可以这样给函数或者模块提供别名:
>>>importmath
>>>importmathasfoobar
>>>foobar.sqrt(4)
2.0
>>>frommathimportsqrtasfoobar2
>>>foobar2(4)
2.0
二.赋值魔法
就算是不起眼的赋值语句也有一些特殊的技巧。
2.1序列解包
序列解包就是将多个值的序列解开,然后放到变量的序列中。
>>>#"多个赋值操作同时进行"
>>>x,y,z=1,2,3
>>>printx,y,z
123
>>>#"交换2个或多个变量"
>>>x,y=y,x
>>>printx,y
21
>>>#"当函数或方法返回元组时"
>>>s={"a":1,"b":2,"c":3}
>>>key,value= s.popitem()
>>>printkey,value
a1
最后一个例子可以看出,它允许函数返回一个以上的值并打包成元组,然后通过一个复制语句很容易进行访问。
注意:解包的序列中元素数量必须和放置在赋值符合=左边的变量数量完全一致,否则会引发异常。
2.2链式赋值
链式赋值是将同一个值赋给多个变量的捷径。
>>>x=y="sss"
2.3增量赋值
增量赋值可以让代码更紧凑简练。
对于+,-,*,/,%等标准运算符都适用:
>>>x=2
>>>x+=1
>>>x*=2
>>>x
6
>>>#对其他数据类型也适用
>>>f="foo"
>>>f+="bar"
>>>f
"foobar"
三.语句块:缩排的乐趣
语句块是条件为真时执行一次或多次的一组语句。在python中,冒号(:)用来标识语句块的开始,块中的每一个语句都是缩进的。当回退到和已经闭合的块一样的缩进量时,就表示当前块已经结束了。
四.条件和条件语句
4.1这就是布尔变量的作用
下面的值在作为布尔表达式的时候,会被解释器看作假(False):
FalseNone0“”()[]{}
其他的一切值都被解释为真,包括特殊值True。
4.2条件执行和if语句
如果条件判断为真,那么后面的语句块就会被执行,也可以加入elif进行多个条件检查。作为if的一部分,还有else子句。
当然,我们可以在if语句里面嵌套使用if语句。
num=input("enteranumber?")
ifnum>0:
ifnum>50:
print"num>50"
elifnum>10:
print"num>10"
else:
print"num>0"
else:
print"num<=0"
4.3更复杂的条件
下面我们回到条件本身,因为它们才是条件执行真正有趣的部分。
4.3.1.比较运算符
x==y; x<y; x>y; x>=y; x<=y;
x!=y; xisy; xisnoty; xiny; xnotiny;
4.3.2. is:同一性运算符
>>>x=y=[1,2,3]
>>>z=[1,2,3]
>>>xisy
True
>>>xisz
False
>>>x==z
True
由此看出,使用==运算符来判定两个对象是否相等,使用is判定两者是否同一个对象。
4.3.3.in:成员资格运算符
name=raw_input("whatisyourname?")
if"s"inname:
print"yournamecontainstheletters"
else:
print"yournamedoesnotcontaintheletters"
4.3.4.字符串和序列比较
字符串可以按照字符顺序排列进行比较。
>>>"alpha"<"beta"
True
字符是按照本身的顺序值排列的,一个字母的顺序值可以用ord函数查到。
其他的序列也可以用同样的方式进行比较,不过比较的是元素的其他类型。
>>>[1,2]>[2,1]
False
>>>[1,[2,3]]<[1,[3,2]]
True
4.3.5.布尔运算符
and运算符是所谓的布尔运算符,它连接2个布尔值,并且在两者都为真时返回真,否则返回假。与它同类的还有2个运算符,or和not。
number=raw_input("enteranumber?")
ifnumber<=10andnumber>=1:
print"great!"
4.3.6.断言
if语句有个近亲,工作方式类似于:
ifnotcondition:
crashprogram
这是因为与其让程序在晚些时候崩溃,不如在错误条件出现时直接让它崩溃。语句中使用的关键字是assert。它确保程序中的某个条件为真时才能让程序正常工作。
>>>age=-1
>>>assert0<age<100
Traceback(mostrecentcalllast):
File"<pyshell#52>",line1,in<module>
assert0<age<100
AssertionError
五.循环
5.1while循环
while语句非常灵活,可以在任何条件为真的情况下重复执行一个代码块。
name=""
whilenotname:
name=raw_input("pleaseenteryourname:")
print"hello,%s!"%name
5.2for循环
当要为一个集合(序列和其他可迭代对象)的每个元素都执行一个代码块时,我们就需要for循环了。
5.2.1.循环遍历字典元素
一个简单的for语句就能循环字典的所有键,就像处理序列一样:
d={"x":1,"y":2,"z":3}
forkeyind:
printkey,"correnspondsto",d[key]
5.2.2.一些迭代工具
A.并行迭代
names=["a","b","c","d"]
ages=[12,23,45,32]
#循环索引迭代
foriinrange(len(names)):
printnames[i],"is",ages[i],"yearsold."
#内建zip函数迭代
forname,ageinzip(names,ages):
printname,"is",age,"yearsold."
B.编号迭代
有时候迭代序列中的对象时,同时要获取当前对象的索引。
#index计数
index=0
forstringinstrings:
if"xxx"instring:
string[index]="sss"
index+=1
#内建enumerate函数迭代
forindex,stringinstrings:
if"xxx"instring:
string[index]="sss"
C.翻转和排序迭代
函数reversed和sorted,作用于任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本:
>>>sorted([2,6,3,7])
[2,3,6,7]
>>>list(reversed("hello"))
["o","l","l","e","h"]
5.3跳出循环
一般情况下循环会一直执行到条件为假,或者到序列元素用完时。但是有时候需要提前中断一个循环。
5.3.1.break
结束循环可以使用break语句。
foriinrange(0,10):
ifi==5:
print"quit"
break
printi
5.3.2.continue
continue语句会让当前迭代结束,跳到下一轮循环的开始。
foriinrange(0,10):
ifi%2==0:
continue
printi
5.3.3.whileTrue/break
比如当用户在提示符下输入单词时做一些事情,并在用户不输入单词后结束循环。
whileTrue:
word=raw_input("enteraword:")
ifnotword:
break
print"Thewordis"+word
六.列表推导式--轻量级循环
列表推导式是利用其他列表创建新列表的一种方法,工作方式类似于for循环:
>>>[x**2forxinrange(10)ifx%3==0]
[0,9,36,81]
>>>[(x,y)forxinrange(3)foryinrange(3)]
[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)
七.三人行
作为最后的结束,我们来看3个语句:pass,del和exec
pass:什么都不做,用来在代码中做占位符使用,方便调试代码。
ifa=="a":
print"yes"
elifa=="b":
pass
else:
print"no"
del:删除不再使用的对象,也就是用作垃圾收集。
>>>x=[1,2]
>>>y=x
>>>delx
>>>x
Traceback(mostrecentcalllast):
File"<pyshell#62>",line1,in<module>
x
NameError:name"x"isnotdefined
>>>y
[1,2]
del删除的只是名称,而不是列表本身,所以上面的例子中,删除x不会影响到y。
exec:动态创造python代码,然后将其作为语句执行或作为表达式计算。但是这样做是会有很严重的潜在安全漏洞,如果程序将用户提供的一段内容中的一部分字符串作为代码执行,程序可能会失去对代码执行的控制。
>>>exec"print"hello,world""
hello,world
相关文章
- python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
- python中矩阵的转置怎么写_Python 矩阵转置的几种方法小结
- 不要再写Python for循环了
- python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能
- python常用面试题_Python+Selenium 常见面试题整理[通俗易懂]
- python自带的排列组合函数
- unboundlocalerror python_Python问题:UnboundLocalError: local variable ‘xxx’ referenced before assignme
- Python--数据类型、循环、运算符、容器的使用
- 【说站】python库如何实现对象的转换
- Python数组切片_python print数组
- python分析人口出生率代码_国家统计局居然也能用的上Python?人口数据Python脚本了解一下?…[通俗易懂]
- 使用Python和OCR进行文档解析的完整代码演示
- 人生苦短,我用Python-手把手教你如何使用python写串口调试助手
- 【测试开发】python系列教程:循环语句
- 使用Python进行交易策略和投资组合分析
- Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
- python-Python与PostgreSQL数据库-使用Python执行PostgreSQL查询(二)
- 获取中国省市的Python代码详解编程语言
- 一步一步学会在Linux上运行Python程序(linux运行python程序)
- 使用Python执行Linux命令的方法(python调用linux命令)
- Linux系统如何运行Python脚本(linux执行python脚本)
- python事件驱动的小例子详解编程语言
- Linux下使用Python开发体验之旅(linux使用python)
- 从 Python 连接到 MySQL:实现更多强大的数据库应用(python和mysql)
- Linux 下 Python 升级:轻松完成升级操作(linux下升级python)
- Python中条件选择和循环语句使用方法介绍
- pyv8学习python和javascript变量进行交互