在实际中, 我们需要在满足某种条件后才去做某事,比如只有在周末才去逛街;或者需要重复做某件事,比如在流水线的工作。而程序就是用来解决生活中的问题,所以Python也实现了这样的结构,分别为分支结构与循环结构。
1) 分支结构
分支在Python中使用if语句。基本结构是
If 条件:
# 条件成立执行的语句写在此处
else:
# 条件不成立时执行此处的语句
条件的执行结果是布尔型数据。即为:如果True,执行if下面的语句,如果False就执行else下面的语句。注意if下面的语句需要缩进4个空格或一个tab。
condition = [1,2,3,4]
if len(condition) > 3: # 判断condition的长度是否大于3
print('变量 condition 的长度是大于 3 的') # 大于3时执行
else:
print('变量 condition 的长度是不大于 3 的') # 否则执行这里的代码
# 上面的if语句已经完成,程序会接着执行下面的
if 2 in condition: # 2 in [1,2,3,4]的 in 操作表示判断 2 是不是在 [1,2,3,4] 中
print('变量 condition 包含 2 这个元素')
else: print('变量 condition 不包含 2 这个元素') # 若只执行一句,可直接在后面
多分支:
If 条件1:
# 条件1成立时执行此处的代码
elif 条件2:
# 条件1不成立,条件2成立执行此处
else:
# 条件1不成立,条件2不成立执行此处
name = 'xiaoming'
week = 6
if name == 'xiaohong':
print('我的名字是'+name)
elif week == 6:
print(name + ' 在 '+str(week)+"逛街")
else: print('全部条件都不成立')
注意:判断条件是布尔运算式的结果,可使用and,or,not
2) 循环结构
Python中的循环结构有两种,while与for循环语句,for循环主要从集合中取元素,元素的个数即为循环次数,每次循环是对取出元素进行操作;while循环用在其他需要循环的场景。
l while循环
while condition:
# 内部为循环时执行的语句
if condition_break: #
break # 在循环中执行到break会退出整个循环
if condition_continue:
continue # 在循环中执行到continue会终止本次循环进入下一次循环
当循环条件condition为True时进入循环,为False时退出循环
i = 0
names = ['hei', 'ming', 'hong', 'gang']
while i < len(names):
print('本次循环我是 xiao'+ names[i])
i = i+1
print('循环结束')
i = -1
list_int = list(range(10))
print(list_int)
while i < len(list_int):
i = i+1
if list_int[i]%2==1:
continue # 当数字是奇数时执行continue进入下一次循环
if list_int[i] > 6:
break # 当数字大于6时终止循环
print(list_int[i])
print('循环结束')
l for循环
for循环用来从集合(包括列表,元组,字典和一些其他结构等)中获取每一个元素进行操作。
for arg in collections:
# 对arg进行操作
collections是一个集合,arg是每次取出的元素,for内部就是对各元素的操作。
for color in ['红', '蓝', '黑', '白']:
print('此时使用的颜色是:' + color)
print('颜色循环结束')
py = {'name': 'Python', 'learn': 'complex', 'type': 'big data'}
for key, value in py.items(): # 字典的items函数获得的是,每个键值对合成一个元组,这些元组组成了一个集合,而通过for循环就可以获得集合中的每个键值对
print(key + ' 对应的值是 ' + value)
print('字典循环结束')
for index, var in enumerate(range(10, 16)):
# enumerate函数获取集合中的值与对应的位置索引, 然后通过for循环依次取出
print('位置 ' + str(index) + ' 的值是 ' + str(var) )
print('enumerate函数循环结束')
for i in range(10):
if i%2 == 1:
continue # 如果是奇数时进入下一次循环
if i > 8:
break # 如果取出的数字大于8时跳出循环
print(i**2) # 打印数字的平方
print('循环结束')
for循环主要用来取集合中的元素进行操作,其都可以用while循环改写。需要注意的是continue与break,在循环中作用分别是终止本次循环进入下一次循环和终止整个循环。
2.6 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码集合,其能提高应用的模块性和代码的重复利用率。在Python中有很多内置的函数,比如经常使用的print等,在一些对象中也有对象可调用的函数,比如列表和元组等的一系列操作函数,而我们也可以自定义函数。
函数由函数名,参数,返回值和函数内部一系列的代码组成。下面讲解函数的定义。
1) 无参函数
def func_name():
'''
这里是函数的文档
# 三个引号的字符串可作为多行注释
'''
print('这是一个无参函数')
a = 1
b = 2
print('计算 a + b = ' + str(a+b))
return a+b # return后面就是函数的返回值,若没有return, 接收返回值是空
# 上面定义了一个函数,但并不会被执行,只有调用才会执行
sum_ab = func_name() # 调用函数,就会执行其中的代码, 用sum_ab获取返回值
print(sum_ab) # 3
注意:使用def定义一个函数,函数名与变量的命名要求相同,函数中的代码需缩进4个空格或一个tab
2) 函数传参
def output_info(name, age):
'''
name : 人名
age : 年龄
'''
print('打印一个人的年龄')
print(name + ' 的年龄是 ' + str(age))
# 调用函数
output_info('小明', 39)
# 可进行指定参数传入
output_info(age = 26, name = '小黑')
注意:参数传入后作为变量使用
3) 默认参数
def learn(name, lang='Python'):
print(name + ' 正在学习 ' + lang + ' 语言')
# 可以在参数指定一个值,若调用时不传入该参数,则使用默认
learn('小刚')
learn('小红', 'C')
注意:默认参数需写在后面
4) 可变个数的参数
def my_sum(a, *b):
# 加上星号的参数可以接收多个传入参数,并以元组保存
print(b)
sum = a
for value in b:
sum = sum + value # 将所有参数相加
print(sum)
return sum
sum_1 = my_sum(1,2,3,4)
print(sum_1)
sum_2 = my_sum(1,2,3,4,5)
print(sum_2)
注意:接收变参的参数需放在普通参数和默认参数后面
5) 可变个数的命名参数
def output_infos(name, **kwargs):
'''
两个星号的kwargs可以接收多个命名参数传入,并以字典形式保存
'''
print('个人信息:')
for key, value in kwargs.items():
print(name + ' 的 ' + str(key) + ' 信息为 ' + str(value))
output_infos('小明', age=28, height=178, addr='上海')
注意:接收可变数量命名参数的参数需放在函数最后。
6) 匿名函数
顾名思义,匿名函数就是一个隐藏了名字的函数。因为函数也是Python的对象,可作为参数和返回值,所以在函数作为参数时,可以使用匿名函数传入,简洁明了。
匿名函数使用lambda表达式定义。
mul = lambda x,y: x*y # 定义匿名函数并赋值于变量s,调用s就是调用该匿名函数
result = mul(3, 4) # 接收匿名函数的返回值
print(result) # 12
'''
上面的匿名函数作用等效于下面的函数
def mil(x, y):
return x*y
result = mul(3)
print(result)
'''
# 匿名函数的使用
result = map(lambda x:x*2, [1,2,3,4])
print(list(result)) # [2, 4, 6, 8]
'''
map函数第一个参数传入只有一个参数的函数,该参数函数对后面集合的每个元素进行操作
'''
注意:lambda与冒号之间是匿名函数的参数,有多个用逗号隔开,冒号后只能写一个表达式,表达式的结果就是匿名函数的返回值。