Python基础04-分支及循环
分支及循环
分支指在程序执行过程中根据条件执行不同的代码。循环只反复或多次执行执行某段代码直到满足某一条件。
if条件判断
条件判断(也称分支)是程序中最重要的功能之一,根据不同的条件执行不同的语句。
if ...
如果条件满足,才执行其中语句,例如
x = 1
if x>0:
print("正数")
print('结束')
if ... else ...
即,如果条件满足,执行某些语句,否则执行另一些语句,例如
x = 1
if x>0:
print("正数")
else:
print("不是正数")
print('结束')
注意:无论x是否符合>0条件,print('结束')都会进行输出
if... elif ... else ...
即,如果满足某条件,执行某些语句,否则如果满足另一条件,执行该条件语句,如果都不满足所列条件则执行其他语句。
x = 1
if x>0:
print("正数")
elif x=0:
print("0")
else:
print("负数")
print('结束')
真假值
在Python中False、None,数字0,字符串'0',以及空字符串'',空列表[]、空字典{},空元祖(,),空集合set(),都被失望假值;
否则被视为真。比如可以直接使用if list判断列表为空:
list = []
if list: # 也可以使用if len(list)>0:
print('列表不为空')
三元表达式
三元表达式即 当条件满足时 变量 为一个值,条件不满足时,变量为另一个值,例如:
max = a if a > b else b
逻辑符代替if判断
在Python语句中and和or也可以用于逻辑判断。
c = a and b
:如果a为假,则c的值为a,否则c的值为bc = a or b
:想反,如果a为假,c的值为b,否则c的值为a
特别是or语句,常用来确保变量的值非空并赋于默认值,例如:
d = {'a': 1}
c = d.get('c') or '默认值'
如果d.get('c')的结果为None,0,空字符串等假值,c被赋予默认值
循环
Python中的循环有for循环和while循环两种。
for循环
for循环(也称遍历),是从一个含有多个变量的数据集合中,依次取出每一项,进行操作。
for循环可以对字符串、列表、元祖、集合、字典及生成器、迭代器、文件指针等可以迭代的对象进行遍历输出。
例如:
遍历获取一组顺序的数字
我们可以用range来生成一组顺序的数字,来遍历处理,示例如下
for i in range(10): # range(10)即生成0-9的10个数字,不包括10
print(i)
遍历字符串
str_var = 'hello,world'
for i in str_var: # i是代表所遍历对象的每一项的一个变量,可以是任意变量名
print(i)
遍历列表
list_var = ['a', 'b', 'c', 'd']
for i in list_var: # i是代表所遍历对象的每一项的一个变量,可以是任意变量名
print(i)
在遍历时如果想连同该项的索引一起输出,可以使用enumerate实现,例如:
list_var = ['a', 'b', 'c', 'd']
for index, item in enumerate(list_var): # index代表索引,item代表每一项的值
print(index, item)
输出结果如下:
0 a
1 b
2 c
3 d
遍历字典
dict_var ={'a': 1, 'b': 2, 'c': 3}
for key, value in dict_var.items(): # i是代表所遍历对象的每一项的一个变量,可以是任意变量名
print(key, value)
注意:遍历字典时,需要使用字典的items()方法,得到每一项key,value的组合
while 循环
while循环用于当指定条件满足时,循环执行某些语句,直到条件不满足。
while循环中为了避免死循环,一般循环中要有使循环趋于结束的语句,例如:
i = 0
while i < 10: # 当i<10时,循环执行下面语句
print(i)
i += 1 # i每次自己增加1,等i>=10时,循环自动结束
break和continue
break用于结束当前循环,continue用于结束本次循环,直接开始下次循环
break使用示例如下
for in range(10):
if i > 5: # 如果大于5,结束循环
break
print(i)
continue使用示例如下:
for in range(10):
if i % 2 == 0: # 如果是偶数,跳过本次循环
continue
print(i)
注意:当有多层循环嵌套时,break每次只能跳出一层循环
循环中的else
循环结束有break结束和全部循环完结束两种,为了判断是哪种结束方式,可以使用else。当非break结束时执行else。
for in range(10):
if i > 5: # 如果大于5,结束循环
break
print(i)
else: # 非break结束时执行
print('非break跳出,循环全部执行完毕')
由于实际不会break,因此运行结果会打印'循环完毕',while...else的使用和for...else类似:
while i < 10:
if i > 5:
break
print(i)
i += 1
else:
print('非break跳出,循环全部执行完毕')