day9——函数初识

函数的定义:将可重复使用的,实现某种功能的代码段组织在一起
2、函数的语法:
def 函数名(参数):
函数体
return
2.1、函数名是一个变量,因此命名规则需遵守变量命名规则

3、函数的调用
函数名()
4、函数的返回值
return 可空、None、单个、多个以tuple返回给调用者
5、函数的参数:
函数定义时声明的变量的叫形参
1、位置参数
2、默认参数
函数调用时传给函数的叫实参
1、位置参数
定义多少个,调用时也必须传多少个
2、关键字参数
3、混合参数
位置参数需在关键字参数之前






函数返回值
return: 在函数执行的时候,遇到return就返回
函数后面什么都不写,返回None
函数中只写一个return,会返回None
多个返回值接受到的是元祖

参数:
函数执行的时候给函数传递信息
在函数生命的位置给的变量: 形参
在函数调用的地方给的具体的值:实参


实参
位置参数:按照形参的位置,传值
关键字参数:按照形参的名字给形参传值
混合参数:即用位置参数,也用关键字参数,先位置参数,后关键字参数

形参
位置参数
默认值参数
动态传参


day8——作业
1,整理函数相关知识点,写博客。



2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def func(a):
    l2 = []
    for i in range(len(a)):
        if i % 2 == 1:
            l2.append(a[i])
    return l2
print(func([1,2,3,4,5,6,7]))


②
def baba(a):    #传完参数以后,现在的   a = [1,2,3,4,5,6,7,8,4,5,6,78,9,8]
    return a[1::2]   #对原列表进行切片形成一个新列表,将新列表返回给调用者
print(baba([1,2,3,4,5,6,7,8,4,5,6,78,9,8]))    #爸爸接受return返回的值



3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def func(a):
    return len(a) > 5
print(func('afdffsfsf'))

②
def func(x):return True if len(x) > 5 else False
print(func([1,2,3,4,5,6,7]))



4,写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
①:
def func(a):return a[:2] if len(a) > 2 else None
print(func([1,2,3,4]))


②:

def func(a):
    return a[:2]
print(func([1]))


5,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def func(a):
    s = s1 = s2 = s3 = 0
    for i in a:
        if i.isspace():
            s += 1
        elif i.isalpha():
            s1 += 1
        elif i.isdigit():
            s2 += 1
        else:
            s3 += 1
    return ('空格:%s,字母:%s,数字:%s,其他:%s,'%(s,s1,s2,s3))
print(func('fdkls4909fjksj jfkd'))


6,写函数,接收两个数字参数,返回比较大的那个数字。
def func(x,y):return x if x > y else y
print(func(10,5))


7,写函数,检查传入字典的每一个value的长度,如果大于2,
那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
①
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
def func(a):
    for i in a:
        a[i] = a[i][:2]
    return a
print(func(dic))

②
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
newdic = {}
def func(a):
    for k, v in a.keys():
        if len(v) > 2:
            s = v[0:2]
            newdic[k] = s
        else:
            newdic[k] = v
    return a
print(func(dic))


8,写函数,此函数只接收一个参数且此参数必须是列表数据类型,
此函数完成的功能是返回给调用者一个字典,
此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:
[11,22,33] 返回的字典为 {0:11,1:22,2:33}。


def func(a):
    dic = {}
    if type(a) == list:
        for k,v in enumerate(a):   #枚举法
            dic[k] = v
    return dic
print(func([11,22,33,44]))



9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。
用户通过输入这四个内容,然后将这四个内容传入到函数中,
此函数接收到这四个内容,将内容追加到一个student_msg文件中。

def func(name,sex,age,education):
    with open("student_msg","a",encoding="utf-8") as f:
        f.write(name+'_'+sex+'_'+age+'_'+education+'\n')

name = input("请输入你的姓名:")
gender = input("请输入你的性别:")
age = input("请输入你的年龄:")
education = input("请输入你的学历:")
print(func(name,gender,age,education))


10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。


def func(name,age,education,sex=""):
    with open("student_msg","a",encoding="utf-8") as f:
        li = "\t".join([name,sex,age,education])
        f.write(li+"\n")

flag = 1
while flag:
    name = input("请输入你的名字(输入q或者Q退出):").strip()
    if name.strip().upper() == 'Q':
        flag = 0
        break
    else:
        sex = input("请输入你的性别(默认为男,回车即可):")
        age = input("请输入年龄:")
        education = input("请输入学历")
        if sex =="":
            func(name,age,education,sex)
        else:
            func(name,age,education)


11,写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。


import os
with open('change',encoding='utf-8') as f1,\
    open('change.bak',encoding='utf-8',mode="w") as f2:
    for i in f1:
        new_line = i.strip().replace('alex','SB')
        f2.write('%s\n'% new_line)
os.remove('change')
os.rename('change.bak','change')


12,写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)


def register():
    while True:
        username = input('请输入新帐号:').strip()
        password = input('请输入新密码:').strip()
        with open('name_list', encoding='utf-8', mode='a+') as f:
            f.seek(0)
            for i in f:
                i = i.split()
                if username in i:
                    print('此帐号已存在,请重新注册!')
                    break
            else:
                f.write('{}\t{}\n'.format(username, password))
                return '注册成功'
# print(register())

def login():
    num = 1
    while num <= 3:
        username = input('请输入用户名:')
        password = input('请输入密码:')
        with open('name_list', encoding='utf-8') as f1:
            for i in f1:
                i = i.split()
                if username in i and password in i:
                    return '登录成功!'
            else:
                print('帐号或密码错误,请重新输入! 您还有%s次机会。' % (3 - num))
                num += 1
    return '登录失败!'
# print(login())

print('1,登录\n2,注册')
while True:
    choice = input('请输入序号:').strip()
    if choice == '1':
        print(login())
        break
    elif choice == '2':
        print(register())
        print(login())
        break
    else:
        print('输入有误,请重新输入选择!')
 

猜你喜欢

转载自www.cnblogs.com/-li926/p/9478068.html