Python004

学习总结四

函数定义

  1. 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段
  2. 函数能提高应用的模块性,和代码的重复利用率

定义函数

  1. 以 def 关键词开头,后接函数标识符名称和圆括号 ()
  2. 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
  3. 函数内容以冒号起始,并且缩进
  4. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

实例

计算C(m, n)

def f(x):
# def 定义函数语法;f() 函数名;x 参数(自变量)
    y = 1
    for num in range(1, x + 1):
        y *= num
    return y


# 引入定义函数,前后最好空两行        
m = int(input('m = '))
n = int(input('n = '))
# 当需要计算阶乘的时不用再写循环,而是直接调用已经定义好的函数
print(f(m) // f(n) // f(m - n))

函数调用

1.定义函数:给出函数一个名称,指定函数里包含的参数,以及代码块结构
2.完成函数的基本结构,可以通过另一个函数调用执行函数,也可以直接从 Python 命令提示符中调用执行

练习

练习1

判断是否是素数

def f(x):
    for y in range(2, x):
        if x % y == 0:
            return False
        elif:
            return True


m = int(input('m = '))
print(f(m))
练习2

可变参数——表示函数参数个数不确定,可以任取参数个数

def add(*args):
    total = 0
    for value in args:
        total += value
    return total


print(add(1, 2))
print(add(1, 2, 3))
练习3

判断是否是回文数

def is_palindrome(num):
    """
    判断一个数是否是回文数
    :param num:一个非负整数
    :return:是回文数返回True,否则False
    """
    temp = num
    total = 0
    while temp > 0:
        total = total * 10 + temp % 10
        temp //= 10
    return num == total


print(is_palindrome(12321))
练习4

判断字符串是否是回文

def is_palindrome(s):

    lens = len(s)

    if lens <= 1:  
        return True  

    l, r = 0, lens - 1
    while l < r:
        l += 1  
        r -= 1
        if s[l] != s[r]:  
            return False   
    return True 


if __name__ == '__main__':  
    s = input('输入字符串:')
    print(is_palindrome(s))  
练习5

拿火柴小游戏(21根火柴,谁拿最后一根谁输(保证电脑获胜))

from random import randint

def main():
    match = 21
    while match >= 0:

        while True:
            a = int(input('你拿的火柴根数:'))
            if 1 <= a <= 4 and a <= match:
                break

        match -= a
        b = 5 - a
        print('电脑拿的火柴根数:%d' % b)
        match -= b
        print('剩余火柴总根数:%d' % match)
        if match <= 1:
            print('你拿到最后一根!')
            break
    print('电脑获胜!')

if __name__ == '__main__':
    main()

变量作用域

1.程序的变量并不是在任何位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量
2.python搜索一个变量的方法是从局部作用域到嵌套作用域再到全局作用域(Local - Enclosed - Global(LEG))
3.如果想改变搜索范围,可以使用global和nonlocal关键字
4.在实际开发中,一定要减少对全局变量的使用

实例

a = 100

def foo():
    # 函数内的a是局部变量(local variable),离开foo函数变量a是无法访问的
    #global a
    # global 表示将函数内的变量定义为全局变量
    a = 200
    print(a)

foo()
print(a)

递归函数

  1. 收敛条件:让递归在有限的次数内完成或者回溯(否则:recursion error)
  2. 递归公式
练习6

用递归求阶乘

def f(n):
    if n == 0 or n == 1:
        return 1
    return n * f(n - 1)


if __name__ == '__main__':
    print(f(5))
练习7

用递归函数求最大公约数(短除法)

def gcd(x, y):
    if x > y:
        return gcd(y, x)
    elif y % x == 0:
        return x
    else:
        return gcd(y % x, x)

print(gcd(222, 222))
练习8

求10级楼梯有多少种走法

def walk(n):
    if n < 0:
        return 0
    elif n == 0:
        return 1
    else:
        return walk(n - 1) + walk(n - 2) + walk(n - 3)


if __name__ == '__main__':
    print(walk(10))
练习9

生成指定长度的验证码

from random import randint

def generate_code(code_len=4):
    all_chars = '0123456789abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQUVWXYZ'
    code = ''
    for _ in range(code_len):
        index = randint(0, len(all_chars) - 1)
        code += all_chars[index]
    return code

if __name__ == '__main__':
    for _ in range(5):
        print(generate_code(code_len=4))
练习10

获取文件后缀名

def get_suffix(filename):
    pos = filename.rfind('.')
    if 0 < pos < len(filename) - 1:
        return filename[pos + 1:]
    else:
        return ''


if __name__ == '__main__':
    print(get_suffix('abc.abc'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值