day-09函数

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

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

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

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


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

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


day9——作业


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:

  Noneprint(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 = 1while 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/lixin012007/p/9687418.html