8人Python-----day06

# 无参无返回
def hello1():
    print("hello")
    return
# 无参有返回
def hello2():
    return 1000 # 返回值  结束函数
print(hello1())
print(hello2())
# 有参有返回
def hello3(a, b):
    return a + b
print(hello3(10, 300))
# 有参无返回
def hello4(a, b):
    print(a + b)
    return
print(hello4(12, 23))

print(hello3(3, 4) * 10)
print(hello4(3, 4) * 10)

变量作用域

变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。

  • 局部变量
    所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。
def test1():
    a = 100
    print(a)
for i in range(1, 10):
    print(i)

局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

  • 全局变量
    所谓全局变量,指的是在函数体内、外都能生效的变量
b = 999
def test1():
    a = 100
    print(a + b)
    print(a)
test1()

重名的时候

b = 999
c = 666
def test1():
    a = 100
    print(a + b)
    print(a)
    c = 111
    print(c)
test1()
# for i in range(1, 10):
#     print(i)

global 关键字

b = 999
c = 666
def test1():
    a = 100
    print(a + b)
    print(a)
    # global声明c 是全局变量
    global c
    c = 111
    print(c)

函数的参数

位置参数(必须参数):调用函数时根据函数定义的参数位置来传递参数。

# 默认参数
def user_info(name, age=18, gender="女"):
    print('您的名字是{}, 年龄是{}, 性别是{}'.format(name, age, gender))
#
# user_info('TOM', 20, '男')
# user_info(12, "小李子", "女")
user_info("小桂子")
# 关键字参数  key=value
user_info("小桂子", age=20)
user_info("小桂子", age=20, gender="男")
user_info("小桂子", gender="男", age=222, )
# 原则 : 让别人看的懂

学员管理系统

8人Python-----day06
显示

def print_info():
    print('-' * 20)
    print('欢迎登录学员管理系统')
    print('1: 添加学员')
    print('2: 删除学员')
    print('3: 修改学员信息')
    print('4: 查询学员信息')
    print('5: 显示所有学员信息')
    print('6: 退出系统')
    print('-' * 20)
info = []
# [{}, {}, ]
def add_info():
    new_id = input("请输入学号")
    new_name = input("请输入姓名")
    new_tel = input("请输入手机号")
    global info

    # 检测学生的姓名是否存在
    for d in info:
        if new_name == d['name']:
            print("该用户已经存在")
            return
    # 不存在, 添加学员
    info_dict = {}
    info_dict['id'] = new_id
    info_dict['name'] = new_name
    info_dict['tel'] = new_tel
    # 追加到学生列表里面
    info.append(info_dict)
    print(info)

def del_info():
    del_name = input("请输入删除学员的名字")
    global info
    for d in info:
        if del_name == d['name']:
            # 删除
            info.remove(d)
            print("删除成功!")
            return
    print("该学员不存在")
    print(info)
def modify_info():
    """改手机号"""
    modify_name = input('请输入要修改的学员的姓名:')
    for d in info:
        if modify_name == d['name']:
            d['tel'] = input('请输入新的手机号:')
            return
            print("修改成功")
    print(info)

def search_info():
    # 姓名查找
    search_name = input("请输入查找学员的名字")
    global info
    for d in info:
        if search_name == d['name']:
            print(d)
            return
def print_all():
    for d in info:
        print(d)
while True:
    print_info()
    user_num = input('请选择您需要的功能序号:')
    if user_num == '1':
        add_info()
    elif user_num == '2':
        del_info()
    elif user_num == '3':
        modify_info()
    elif user_num == '4':
        search_info()
    elif user_num == '5':
        print_all()
    elif user_num == '6':
        print('退出系统')
        break

递归

特点

  • 函数内部自己调用自己
  • 必须有出口(终止条件)
def sum_number(num):
    if num == 1:
        return 1
    return sum_number(num-1) + num


print(sum_number(3))
print(sum_number(100))

# 1~ n阶乘   1* 2 * 3 * ...n
# 阶乘 10*9*8*7...1
def cac1(n):
    if n == 1:
        return 1
    return n *cac1(n-1)

print(cac1(10))

# # 求 [1,2,3,4,5] 的和
ls = [1, 2, 3, 4, 5]
def arraySum(ls, start, end):
    if start==end:
        return ls[end]

    return ls[start] + arraySum(ls, start+1, end)
print(arraySum(ls, 0, 4))


# 使用递归求 s = [5,1,4,6,2] #求最大l

上一篇:JavaScript中面向对象那点事


下一篇:剑指offer-day06二叉树