python基础02
条件控制
- python条件语句是通过一条或多条语句的执行结果(Ture或者False)来执行的代码块
-
python中用elif代替了else if,所以if语句的关键字为:if-elif-else。
-
注意
- 每个条件后面都要用冒号:,表示接下来是满足条件后要执行的语句块
- 使用缩进来划分语句块,相同缩进数的语句在一期组成一个语句块
- 在python中没有switch-case语句
#if-else语句
age = int(input("请输入年龄:"))
if age >= 7:
print("可以上小学")
else:
print("年龄未满足要求,不可以上小学")
请输入年龄:3
年龄未满足要求,不可以上小学
#if-elif语句
holiday_name = input("请输入节日:")
if holiday_name == '儿童节':
print("是小孩子的节日!")
elif holiday_name == '端午节':
print("今天要吃粽子!!")
elif holiday_name == '情人节':
print("今天要买一束花送给她!")
else :
print("今天是努力的一天!")
#if嵌套语句
list1 = [1,3,5,9,'apple','bee']
a = input("请输入")
if a in list1:
if a == 'apple':
print("Ture")
else:
print(False)
else:
print("请重新尝试")
0 小于5
1 小于52 小于5
3 小于5
4 小于5
5 大于等于5
for循环
for循环可以遍历任何可迭代对象
- 字符串/列表/元组/字典/集合/generator(生成器)/iterator(迭代器)都是可迭代的
- 可用for去访问上述中内的每一个元素
- break语句用于跳出当前循环体
#本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?
benjin = 10000
nianlilv = 0.0003
for i in range(1,6):
new = (benjin*nianlilv+benjin)
benjin = new
print("五年后获得的本金为:",benjin)
gallahad the pure
robin the brave
在序列遍历中,索引位置和对应值可以使用enumerate()函数同时得到:enumerate()函数用于可便利的数据对象(如列表、元组、字符串)组合为一个索引序列,同时列出数据和数据下标,一般用于for循环当中
#enumerate()函数进行序列遍历
for i,v in enumerate(['tic','tac','toe']):
print(i,v)
1 dasd
2 aaaa
3 ads
#zip()函数依次取出二位列表的每列函数
list1 = [[1, 2, 3, 4, 5, 6],
[1, 3, 5, 7, 9, 11],
[3, 4, 5, 6, 8, 9],
[2, 4, 6, 8, 10, 12],
[0, 3, 5, 7, 9, 0],
[5, 6, 8, 2, 3 ,4]]
for i in zip(*list1):
print(i)
reversed()函数返回一个反转的迭代器,因此要反转一个序列,首先指定这个序列然后调用reversed()函数
#reversed()函数反转迭代器
star = "qwert"
print(list(reversed(star)))
[2, 3, 4, 5, 6, 8, 9]
None
Pass语句
在python中pass是空语句,是为了保持程序结构的完整性,pass不做任何事情,一般用做占位语句
#pass语句占位
while True:
pass
1
2
4
迭代器对象可以使用常规for语句进行遍历
#使用for语句进行迭代器遍历
list1 = [1,2,4,5,6]
a = iter(list1)
for x in a:
print(x,end="") #end传递空字符串,意为末尾不换行加空格
请输入半径:5
78.53981633974483
参数传递
参数传递分为传不可变对象以及传可变对象
- ps:见One可变数据与不可变数据类型
参数
以下是调用函数时可使用的正式参数类型:
必须参数/关键字参数/默认参数/不定长参数
必须参数
- 必须参数需要以正确的顺序传入函数。因此也叫位置参数,调用时的数量必须和声明时的一样,且位置参数必须放置在关键词参数之前
#调用printme()函数
def printme(str):
print(str) #打印任何传入的字符串
return
printme() #未传参报错
姓名: runoob
年龄: 19
默认参数
- 调用函数时,如果没用传递参数,则会使用默认参数
- 如下如果没用传入age参数,则使用默认值
#默认参数
def printinfo(name,age = 35):
print("姓名:",name)
print("年龄:",age)
return
printinfo(age=19,name="runoob")
print("------------------------------")
printinfo(name="runoob")
姓名: runoob
年龄: 35
不定长参数
- 如果在函数调用时没用指定参数,它就是一个空元组,我们也可以不向函数传递未命名的变量
- 不定长参数类型有两种:1.+参数名 2.*+参数名
*+参数名
- 这种情况下在调用时会自动组装成一个元组
- 允许传入0个或任意多个参数
#不定长参数第一种
def sum(*crad):
sum = 0
for weight in crad:
sum += weight
if sum > 500:
print("超重了!再不下,就给你一个大笔兜")
return sum
sum_s = sum(50,80,200,200) #自动组成一个元组传入形参
{'name': '小王', 'id': '001', 'score': '82'}
单独出现*的参数
声明函数时,参数中星号*可以单独出现,如果单独出现星号后的参数必须用关键字传入
#*关键字传参
def f(a,b,*,c):
return a+b+c
f(1,2,3) #星号后未用关键字传参导致报错
6
混合使用
#混合使用
def foo(*args,**kargs):
print(args)
print(kargs)
foo(a=2,1,2,3)
#当同时使用*和**时,必须将*的参数列在**的前面,否则会报错
(1, 2, 3)
{'a': 2}
匿名函数
- python使用lambda来创建匿名哈桉树
- 所谓匿名函数,意为不再使用def语句标准的形式定义一个函数
- lambda只是一个表达式,函数体比def简单的多
- lambda的主体时一个表达式,而不是一个代码块;仅仅能在lambda表达式中封装有限的逻辑进去
- lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
- 虽然lambda函数看起来只能写一行,却不同于c或c++的内联函数,后者的目的是调用小函数时不占用栈内存,从而增加运行效率
`python
lambda表达式创建一元二次方程
def fx(a,b,c):
return lambda x : axx + b*x + c
f = fx(1,2,3)
print(f(3))
Original: https://www.cnblogs.com/311dih/p/16402291.html
Author: 叁_311
Title: Two—python循环语句/迭代器生成器/yield与return/自定义函数与匿名函数/参数传递
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643832/
转载文章受原作者版权保护。转载请注明原作者出处!