1.条件和条件语句
1.1 布尔值
用做表达式(如用if语句中的条件)时,下面的值都将被解释器视为假:
False 、 None 、 0 、 ” ” 、 ( ) 、 [ ] 、 { }
标准值False 和None、各种类型(包括浮点数、负数等)的数值0、空序列(如空字符串、空元组和空列表)以及空映射(如空字典)都视为假。而其他各种值都被视为真,包括特殊值True。
其意思值为0(表示假)和1(表示真),True和False不过是0和1的别名。
>>> True
> True
>>> False
> False
>>> True == 1
> True
>>> False ==0
> True
>>> True + False + 42
> 43
布尔值True和False属于类型bool,而bool与list、str和tuple一样,可用来转换其他的值。
>>> bool('jack')
> True
>>> bool(42)
> True
>>> bool('')
> False
>>> bool(0)
> False
Python里自动将值转化成bool值
1.2 执行if语句内容
>>> num = 1
>>> if num ==1:
>>> print("hello world")
if和冒号之间的表达式为 真,就执行后续的代码(即print代码),如果条件为假,就不执行。
应注意缩进行,if下面的代码区应缩进4个空格,默认table为四个空格,在编写代码时空格键和table不要混合使用
1.3 else语句
else所起的作用为除if(如果)以外,还有其他选择,else不是单独的一部分,与if的语句是同一个部分。
>>> num =1 ###直观一点
>>> if num = 2:
>>> print("hello")
>>> else:
>>> print("hello world")
此代码的意思是,如果没有执行第一个代码块(因为条件为假),将进入第二个代码块。
还有一种语句和它们很像,那就是条件表达式
status = “friend” if name.endswith(“Jack”) else “stranger”
如果为真则,结果是第一个提供值,如果为假就是第二个值stranger。
1.4 elif
要检查多个条件,可使用elif 即else if的缩写
>>> num = int(input('Number: '))
>>> if num > 0:
>>> print("正整数")
>>> elif num < 0:
>>> print("负整数")
>>> else:
>>> print("0")
用户输入一个数,如果输入的是大于0的数则输出正整数,如果输入的是小于0的数,那么就输出负整数,剩下的只有等于0的数了,所以直接用else。
1.5 比较运算符
is: 相同运算符
>>> 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指向另一个列表虽然相等,但不是同一个对象。
>>> x = [1,2,3]
>>> y = [1,2,3]
>>> x == y
> True
>>> x is y
> False
==用来检查两个对象是否相等,而is用来检查两个对象是否相同(是同一个对象)。
in :成员资格运算符
与其它比较运算符一样,它也可用于条件表达式。
>>> name = input('What is your name?')
>>> if 's' in name:
>>> print('Yes')
>>> else:
>>> print('No')
2. while循环
>>> x = 1
>>> while x<=100:
>>> print(x)
>>> x+=1
以上用while打印1~100的数字,while和冒号之间的为条件满足后(如x<=100)才执行代码区的语句。
3. for循环
可迭代对象是用for循环进行遍历的
>>> words = ['What','is','your','name']
>>> for word in words:#word:目标标识符,words:列表
>>> print(word)
或
>>> numbers = [0,1,2,3,4,5,6,7,8,9]
>>> for number in numbers:
>>> print(number)
迭代(也就是遍历)特定范围内的数是一种常见任务
4. 迭代
如有两个列表
>>> names = ['jack','Ammy','Steven','Make']
>>> ages = [1,2,3,4]
如果要打印名字和对应的年龄
>>> for i in range(len(names)):
>>> print(names[i],'is',ages[i],'years old')
i 是用作循环索引的变量的标准名称,并行迭代工具是内置的zip,将两个序列“缝合起来”,并返回一个元组组成的序列。返回值是一个适合迭代的对象。要查看内容,是用list转换为列表。
>>> list(zip(names,ages))
>>> [('jack',1),('Ammy',2),('Steven',3),(Make,4)]
“缝合”后,可在循环列表中将元组解包
>>> for names,ages in zip(names,ages)
>>> print(name ,'is',age,'years old')
zip可以缝合任意数量的序列,当序列长度不同时,函数zip将在最短的序列用完后停止“缝合”
>>> list(zip(range(5)),range(10000000000))
> [(0,0),(1,1),(2,2),(3,3),(4,4)]
5. 跳出循环
5.1 break
要跳出循环可以用break
>>> from math import sqrt
>>> for n in range(99,0,-1):
>>> root = sqrt(n)
>>> if root == int(root):
>>> print(n)
>>> break
以上是遍历从100到1,找到一个可开平方的值,找到以后要跳出
range传递了第三个参数—步数,即序列中相邻数的差。通过将步数调成负数,可让range往下迭代
5.2 continue
结束当前迭代,并跳到下一次迭代的开头,意味着跳过循环体中余下的语句,但不结束循环。
>>> for x in seq:
>>> if x:continue:
>>> if y:continue:
>>> if z:continue:
>>>
>>> do_something()
>>> do_something_else()
>>> do_another_thing()
>>> etc()
其实一条语句就够了
>>> for x in seq:
>>> if not(x or y or z):
>>> do_something()
>>> do_something_else()
>>> do_another_thing()
>>> etc()