疯狂python讲义学习日志03——流程控制

python提供了顺序结构、分支结构和循环结构方便用户进行流程控制。所谓顺序结构是在按照正常的书写格式书写的一行行代码,程序运行时会一行一行的执行这些代码美其名曰顺序结构。本章将对python的分支结构和循环结构进行详细说明,为了简洁明了的说明python的分支结构和循环结构,将展示大量示例代码。

1 分支结构

所谓分支结构是指if语句的使用。下面说明if语句的三种使用形式:
第一种形式:

if expression :
   statement...

第二种形式:

if expression :
   statement...
else :
   statement...

第三种形式:

if expression:
	statement...
elif expression:
	statement...
else :
	statement...
   对于if语句来说,除了False本身,各种代表“空”的None、空字符串、空元组、空列表和空字典都会被当成False处理。在使用if else分支语句时,一定要先处理包含范围更小的情况。另外,可以使用pass语句使程序更加完整。
s = input("请输入一个整数:")
s = int(s)
if s>5 :
  print("大于5")
elif s<5 :
  pass
elseprint("等于5")

2 断言

断言和if分支有点相似,它用于对一个bool表达式进行断言,如果该表达式为True,该程序可以继续向下执行;否则该程序会引发AssertionError错误。

s_age = input("请输入您的年龄:")
age = int (s_age)
assert 20< age <80
print ("您输入的年龄在20到80之间")#如果输入不在此范围,报assersionError错误

3 循环结构

对于循环结构而言,包含如下4个部分:

  • 初始化语句(init_statements):一条或多条语句,用于完成一些初始化工作。初始化语句在循环开始之前执行。
  • 循环条件(test_expression):这是一个布尔表达式,该表达式决定是否执行循环体。
  • 循环体(body_statements):这个部分是循环的主体,如果循环条件允许,这个代码将被重复执行。
  • 迭代语句(iteration_statements):用于控制循环条件中的变量,使得循环在合适的时候结束。

3.1 While循环

while循环的语法格式如下:

#while循环的语法格式:
[init_statements]
while test_expressin
	body_statements
	[iteration_statements]
#while循环应用实例
count_i=0
while count_i < 10 :
	print("count:",count_i)
	count_i+=1
print("循环结束")
#使用while循环遍历元组和列表
a_tuple = ('fkit','crazyit','charlie')
i=0
#只有i小于len(a_tuple),继续执行循环体
while i < len(a_tuple)
	print(a_tuple(i))
	i+=1

3.2 for-in 循环

for-in循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素。for-in循环的语法格式如下:

for 变量 in 字符串|范围|集合等
	statements

for-in循环可用于遍历任何可迭代对象。可迭代对象是指该对象中包含一个_iter_方法,且该方法的返回值对象是next()方法。

s_max = input("请输入您想计算的阶乘:")
mx = int(s_max)
result = 1
#使用for-in遍历范围
for num in range(1,mx+1)
	result *=num
print(result)

3.2.1 使用for-in遍历列表和元组

src_list = [12,45,33.4,13,'a',4,56,'crazyit',109.5]
my_sum=0
my_count=0
for ele in src_list
	if isinstance(ele,int) or isinstance(ele,float)
		print(ele)
		my_sum+=ele
		my_count+=1
print('总和:',my_sum)
print('平均数:',my_sum/my_count)

上面程序使用了python的isinstance()函数,该函数用于判断某个变量是否为指定类型的实例,其中前一个是要判断的变量,后一个参数是类型。

a_list = [330,1.4,50,'fkit',3.5]
for i in range(0,len(a_list)):
	print("第%d个元素是%s"% (i,a_list[i]))

3.2.2 使用for-in循环字典

字典包含了如下几个方法:

  • items():
  • keys():返回字典中所有key的列表
  • values():返回字典中所有value的列表
my_dict = {'语文':89,'数学':92,'英语':80}
for key,value in my dict.keys():
	print('key':key)
	print('value:',value)
print('------------------------------------')
#通过key()方法遍历所有key
for key in my_dict.keys():
	print('key:',key)
	print('value:',my_dict[key])

3.3 for表达式

for表达式最终返回的是列表,因此for表达式也被称为列表推导式。

a_range = range(10)
#对a_range执行for表达式
a_list = [x*x for x in a_range]
#a_list集合包含10个元素
print(a_list)

如果将for表达式的方括号改为圆括号,for表达式将不再生成列表,而是生成一个生成器(generator),该生成器同样可以使用for循环迭代。

#使用for表达式创建生成器
c_generator = (x*x for x in a_range if x % 2 ==0)
#使用for循环迭代生成器
for i in c_generator:
	print(i,end='\t')
print()

可以使用for表达式进行嵌套:

d_list = [(x,y) for x in range(5) for y in range(4)]
print(d_list)

3.4 常用工具函数

使用zip()可以将两个列表“压缩”成一个zip对象,如此就可以使用循环并遍历两个列表。

a=['a','b','c']
b=[1,2,3]
c=[0.1,0.2]
[x for x in zip(a,b)]
[('a',1),('b',2),('c',3)]

[x for x in zip(a,c)]
[('a',1,0.1),('b',2,0.2)]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章