第六周总结

本周学习了函数内容,进行了一些代码练习。

python中循环的方式:

for循环:  for 取值 in 序列或迭代对象:

        循环体

例如:

for i in range(1,101):
    if i%7 == 0 and i%5!=0:
        print(i)

while循环:  while 条件表达式:

          循环体

       [else:

          else子句代码块]

循环选择结构实现成绩输入求均值:

numbers = []
while True:
    x = input('请输入一个成绩:')
    try:
        numbers.append(float(x))
    except:
        print('不是合法成绩')
    while True:
        flag = input('继续输入?(yes/no)').lower()
        if flag not in('yes','no'):
            print('只能输入yes或no')
        else:
            break
    if flag == 'no':
        break
print(sum(numbers)/len(numbers))

 

函数的定义语法

def 函数名([参数列表]):

  '''注释'''

  函数体

例:

def fib(n):
    a, b = 1, 1
    while a < n:
        print(a, end = ' ')
        a, b = b, a+b

fib(1000)

递归函数:如果一个函数中直接或间接地又调用了该函数自身,叫做递归调用。

注:每次递归应保持问题性质不变。

每次递归应使用更小或更简单的输入。

必须有一个能够直接处理而不需要再次进行递归的特殊情况来保证递归过程可以结束。

函数递归深度不能太大,否则会引起内存崩溃。

使用递归实现整数的因式分解:

from random import randint

def factors(num, fac = []):
    #从2开始查找因数
    for i in range(2, int(num**0.5)+1):
        #如果找到一个因数
        if num%i == 0:
            fac.append(i)
            #对商继续进行分解,重复此过程
            factors(num//i,fac)
            break
        else:
            #如果不可分解了,则自身也是因数
            fac.append(num)

facs = []
n = randint(2, 10**8)
factors(n, facs)
result = '*'.join(map(str, facs))
if n==eval(result):
    print(n, '= '+result)

 

lambda表达式

lambda表达式常用来声明匿名函数,也就是没有函数名字的、临时使用的小函数,常用在临时需要一个类似于函数的功能但又不想定义函数的场合,例如,内置函数sorted()和列表方法 sort()的key 参数,内置函数 map()和 filter()的第一个参数,等等。当然,也可以使用lambda表达式定义具名函数。

posted @ 2022-08-08 07:51  灰幕  阅读(60)  评论(0)    收藏  举报