Two—python循环语句/迭代器生成器/yield与return/自定义函数与匿名函数/参数传递

python基础02

条件控制

  1. python条件语句是通过一条或多条语句的执行结果(Ture或者False)来执行的代码块
  2. python中用elif代替了else if,所以if语句的关键字为:if-elif-else。

  3. 注意

  4. 每个条件后面都要用冒号:,表示接下来是满足条件后要执行的语句块
  5. 使用缩进来划分语句块,相同缩进数的语句在一期组成一个语句块
  6. 在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}

匿名函数

  1. python使用lambda来创建匿名哈桉树
  2. 所谓匿名函数,意为不再使用def语句标准的形式定义一个函数
  3. lambda只是一个表达式,函数体比def简单的多
  4. lambda的主体时一个表达式,而不是一个代码块;仅仅能在lambda表达式中封装有限的逻辑进去
  5. lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
  6. 虽然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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球