《Python基础教程》 读书笔记 第五章(上)条件语句
5.1 print和import的更多信息
5.1.1使用逗号输出
打印多个表达式也是可行的,只要将它们用逗号隔开就好:
12>>>
'age:'
,
42
age:
42
要同时输出文本和变量值,却又不希望使用字符串格式化:
123456789>>> name=
'Gumby'
>>> salutation=
'Mr.'
>>> greeting=
'Hello.'
>>>print greeting,salutation,name
Hello. Mr. Gumby
如果在结尾处加上逗号,那么接下来的语句会与前一条语句在同一行打印:
print 'Hello,',
print 'world!'Hello, world!
5.1.2 把某件事作为另一件事导入
从模块导入函数:
import somemodule
from somemodule import somefunctian
from somemodule import somefunction,anotherfunction,yetanotherfunction
from somemodule import*
可以在语句末尾增加一个as子句,在该子句后给出名字,或为整个模块提供别名:
12345>>> import math as foobar
>>>
foobar.sqrt
(4)
2.0
也可以为函数提供别名:
12345>>>
from
math
import
sqrt as foobar
>>> foobar(
4
)
2.0
5.2赋值
5.2.1序列解包
多个赋值操作可以同时进行:
1234567891011>>> x,y,z
=
1
,
2
,
3
>>>
x,y,z
1
2
3
>>> x,y
=
y,x
>>>
x,y,z
2
1
3
序列解包(sequence unpacking)或可选代解包--将多个值的序列解开,然后放到变量的序列中:
1234567891011>>> values
=
1
,
2
,
3
>>> values
(
1
,
2
,
3
)
>>> x,y,z
=
values
>>> x
1
当函数或者方法返回元组(或者其他序列或可迭代对象)时,这个特性尤其有用。假设需要获取(和删除)字典中任意的键-值对,可以使用popitem方法,这个方法将键-值作为元组返回。那么这个元组就可以直接赋值到两个变量中:
1234567891011>>> scoundrel
=
{
'name'
:
'robin'
,
'girlfriend'
:
'marion'
}
>>> key,value
=
scoundrel.popitem()
>>> key
'girlfriend'
>>> value
'marion'
它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所解包的序列中的元素数量必须和放置在赋值符号=左边的变量数量完全一致,否则Python会在赋值时引发异常:
1234567>>> x,y,z
=
1
,
2
Traceback (most recent call last):
File
"<input>"
, line
1
,
in
<module>
ValueError: need more than
2
values to unpack
5.2.2链式赋值
链式赋值(chained assignment)是将同一个值赋给多个变量的捷径。
x=y=somefunction()
和下面语句的效果是一样的:
y=somefunction()
x=y
注意上面的语句和下面的语句不一定等价:
x=somefunction()
y=somefunction()
5.2.3增量赋值
这里没有将赋值表达式写为x=x+1,而是将表达式运算符放置在赋值运算符的左边,写成x+=1。这种写法叫做增量赋值(augmented assignment),对于*、/、%等标准运算符都适用.
123456789>>> x
=
2
>>> x
+
=
1
>>> x
*
=
2
>>> x
6
5.3语句块:缩排的乐趣
语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句。在代码前放置空格来缩进语句即可创建语句块。使用tab字符也可以缩进语句块。Python将一个tab字符解释为到下一个tab字符位置的移动,而一个tab字符位置为8个空格,但是标准且推荐的方式是只用空格,尤其是在每个缩进需要4个空格的时候。
5.4条件和条件语句
5.4.1这就是布尔变量的作用
下面的值在作为布尔表达式的时候,会被解释器看作假(false}:
False None 0 ”” () [] {}
换句话说,也就是标准值False和None、所有类型的数字0(包括浮点型、长整型和其他类型)、空序列(比如空字符串、元组和列表)以及空的字典都为假。其他的一切都被解释为真,包括特殊值True.
5.4.2 条件执行和if语句
if语句,它可以实现条件执行。即如果条件 (在if和冒号之间的表达式)判定为真,那么后面的语句块就会被执行。如果条件为假,语句块就不会被执行.
123name
=
raw_input
(
'what is your name?:'
)
if
name.endswith(
'jack'
):
'hello, Mr.jack'
5.4.3 else子句
12345name
=
raw_input
(
'what is your name?:'
)
if
name.endswith(
'jack'
):
'hello, Mr.jack'
else
:
'hello, stranger'
5.4.4 elif子句
如果需要检查多个条件,就可以使用elif,它是“else if的简写,也是if和else子句的联合使用----也就是具有条件的else子句。
1234567num
=
input
(
'enter a number:'
)
if
num>
0
:
'the number is positive'
elif
num<
0
:
'the number is negtive'
else
:
'the number is zero'
5.4.5更复杂的条件
1.比较运算符
2.相等运算符
如果想要知道两个东西是否相等,应该使用相等运算符,即两个等号==
3. is:同一性运算符
12345678910111213141516171819>>> x
=
y
=
[
1
,
2
,
3
]
>>> z
=
[
1
,
2
,
3
]
>>> x
=
=
y
True
>>> x
=
=
z
True
>>> x
is
y
True
>>> x
is
z
False
x和z相等却不等同,为什么呢?因为is运算符是判定同一性而不是相等性的。变量x和y都被绑定到同一个列表上,而变量z被绑定在另外一个具有相同数值和顺序的列表上。它们的值可能相等,但是却不是同一个对象。
4.in:成员资格运算符
5.字符串和序列比较
6.布尔运算符
5.4.7断言
如果需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert语句就有用了,它可以在程序中置入检查点。
12345678910111213>>> age
=
10
>>>
assert
0
<age<
100
>>> age
=
-
1
>>>
assert
0
<age<
100
Traceback (most recent call last):
File
"<input>"
, line
1
,
in
<module>
AssertionError
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· 我干了两个月的大项目,开源了!
· 千万级的大表,如何做性能调优?
· 盘点!HelloGitHub 年度热门开源项目
· Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,
· 你所不知道的 C/C++ 宏知识——基于《C/C++ 宏编程的艺术》