zoukankan      html  css  js  c++  java
  • 函数初识(函数的返回值,三元运算,函数的传参)

    函数的初识
    def关键字 空格 函数名(命名要求与变量相同):
        函数体
        执行函数:函数名 ()
        函数是以功能为导向的。
         def login():
            pass
        def register():
            pass
    函数的返回值:
     return: 1.函数中遇到renturn ,结束函数,下面的代码不执行。
                2.将函数的值返回给函数的调用者(执行者)
                    第一种情况:
                        只有return,返回None
                    第二种情况;
                        return None
                    第三种情况:
                        return 单个值。返回值得类型与值的类型相同。
                    第四种情况:
                        return 多个值,以元祖的形式返回给函数的调用者。
    函数的参数。
      # 实参角度
    
        位置参数
            一一对应,实参形参数量相等
        关键字参数
            一一对应,实参形参数量相等,实参顺序可变
        混合参数 (位置参数,关键字参数)
            关键字参数必须在位置参数后面
        # 形参角度
    
        位置参数
             一一对应,实参形参数量相等
        默认参数
            默认参数必须放在形参的位置参数后面
            默认参数不传值则为默认值,传值则覆盖默认值。
        动态参数
                
    什么是None?
    所有的空集合,字典,列表,字符串...
    '''
    重复代码多,可读性差
    函数的产生:
    函数就是封装一个功能。
    def my_len():
    # def  关键字     定义一个函数
    #my_len 函数名,书写规则和变量一样
    # def与函数名中间一个空格
    # 函数名(): 加上冒号
    # 函数体
        l1 = (1, 2, 3, 4, 5, [3, 2, 1], 'alex', '小明', 'a', 'b')
        count=0
        for j in l1:
            count+=1
        print(count)
    my_len()
    函数执行:函数名+()
    函数的返回值
    写函数,不要在函数中写print()
    return
    1.在函数中,遇到return结束函数
    2.将值返回给函数的调用者
        无return
        return None
        return 一个值,该值是什么,直接返回给函数的调用者,函数名()
        return 多个值,将多个值放在一个元阻里,返回函数的调用者。
    def my_len():
        count=0
        l1 = (1, 2, 3, 4, 5, [3, 2, 1], '小强', '小明', 'a', 'b')
        for j in l1:
            count+=1
        return count
    # ret=my_len()
    # print(ret)
    print(my_len())
    print(len('15428517'))
    
    
    def my_len(l):      #l形式参数,形参
        print(l)
        count=0
        for i in l:
            count+=1
            return count
    a='kfjimirmvirv'
    print(my_len(a))        #实际参数,实参
    print(my_len([1,2,3]))
    实参角度:
    1.位置传参,按顺序,一一对应。
    def func(a,b,c):
        print(a)
        print(b)
        print(c)
    func('alex',[1,2,3],666)
    写一个函数,功能是比较大小
    def mix_min(a,b):
        if a>b:return a
        else:return b
    a=int(input('请输入一个数:'))
    b=int(input('请输入另一个数:'))
    print(mix_min(a,b))

    三元运算

    def mix_min(a,b):
        # z=a if a>b else b
        # return z
        return a if a>b else b
    a=int(input('请输入一个数:'))
    b=int(input('请输入另一个数:'))
    print(mix_min(a,b))
    def mix_min(a,b) return a if a>b else b
    关键字传参,不按顺序,一一对应。
    def mix_min(a,b):
        return a if a>b else b
    print(mix_min(b=200,a=105))
    混合传参,关键字传参永远在最后面
    def func1(a,b,c,d,e):
        print(a)
        print(b)
        print(c)
        print(d)
        print(e)
    func1(1,2,d=8,c=6,e=9)
    func1(1,d=5,c=8,9,3) #报错
    按照形参角度:
    # 1.位置传参,按位置,一一对应
    def func(a,b,c):
        print(a)
        print(b)
        print(c)
    func('hh',666,'上善若水')
    # 2.默认参数:传参则覆盖,不传参则默认,默认参数永远在位置参数后面
    def func(a,b=666):
        print(a,b)
    func(456)
    func(123,888)
    s='小强'.center(30,'*')
    print(s)
    HR录入名单
    def Infor_entry(username,sex=''):
        with open('name_list',encoding='utf-8',mode='a')as f1:
            f1.write('{}	{}
    '.format(username,sex))
    while True:
        username=input('请输入姓名(男生以1开头):').strip()
        if '1'in username:
            username=username[1:]
            Infor_entry(username)
        else:
            Infor_entry(username,'')
    模拟len()函数
    初期
    # 重复代码多,可读性差
    def
    my_len(): l=[1,2,3,4,5,6,7] count = 0 for i in l: count+=1 print(count) my_len()
    升级
    def my_len(a):#a 形式参数,也可以是b,c 等等,用于接收实参
        count = 0
        for i in a:
            count+=1
        return count
    
    l=[1,2,3,4,5,6,7]
    my_len(l)#l,s 都是实参,实际存在的
    print(my_len(l))
    s='forjoivomv,vpoeqkg'
    my_len(s)
    print(my_len(s))
    
    
    def tes(a, b, c):
        print(111)
        print(a, b, c)
    
    tes(22, 'zdd', [11, 22, 33])#一一对应,实参形参数量相等
    
    def func(x, y,):
        print(x, y)
    
    func(y=3333, x=4)#一一对应,实参形参数量相等,实参顺序可变
    
    def func1(x, y, z):
        print(x, y, z)
    
    func1(111, 222, z=555)  # 混合传参 位置参数必须再前面
    func1(111, y=555, 222)  # 报错
    
    
    def func2(y, x):
        print(x, y)
    func2(1, 2)
    
    def func2(y, x, z=100):
        print(x, y, z)
    func2(1, 2, 3000)
    
    def max(a,b):
         if a>b :
             return a
         else:
             return b
    
    print(max(1,2))
    三元运算
    '''
    def max(a,b):
        c=a if a>b else b
        return c
    print(max(33,678),type(max(5,6)))#678 <class 'int'>
    
    def max(a,b):
        return  a if a>b else b
    print(max(455,298))
    
    def max (a,b):return a if a>b else b
    '''
    实参角度
    位置参数
    一一对应,实参形参数量相等
    
    关键字参数
    一一对应,实参形参数量相等,实参顺序可变
    
    混合参数(位置参数,关键字参数)
    关键字参数必须在位置参数后面
    
    # 形参角度
    
    位置参数
    一一对应,实参形参数量相等
    
    默认参数
    默认参数必须放在形参的位置参数后面
    默认参数不传值则为默认值,传值则覆盖默认值。
    动态参数
    
    
    def input_information(name,sex=''):?
        with open ('information',encoding='utf-8',mode='a') as f1:
            f1.write('{}	{}
    '.format(name,sex))
    while True:
        msg=input('请输入用户的姓名,性别Q或者q退出').strip()
        if msg.upper()=='Q':break
        if ','in msg:
            name1,sex1=msg.split(',')
            input_information(name1,sex1)
        else:
            input_information(msg)
    写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,
    并将其作为新列表返回给调用者。
    def odd_number(a):
        list=[]
        for i in range(len(a)):
            if i % 2==1:
                list.append(a[i])
        return list
    
    l1=[1,2,3,4,5,6,7,8,9,10]
    print(odd_number(l1))
    set=(1,2,3,4,5,6,7,8,9,10)
    print(odd_number(set))
    
    
    def func2(argv): return argv[1::2]# 切片的妙用
    l1=[1,2,3,4,5,6,7,8,9,10]
    print(func2(l1))
    升级:两个列表合并一起测
    def func2(*args): return args[1::2]#*在函数定义时是聚合
    l1=[1,2,3,4,5,6,7,8,9,10]
    l2=[11,12,13,14,15,16]
    print(func2(*l1,*l2))#*在函数调用时是打散
    写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
    def my_len(a):
        count=0
        for i in a:
            count+=1
        if count>5:
            return True
        else:
            return False
    s='bihtjjj'
    print(my_len(s))
    l=[1,'xiaoqiang',333,666,888,'您好']
    print(my_len(l))
    set=(1,333,666,888)
    print(my_len(set))
    
    def func3(argv): return True if len(argv) > 5 else False# 三元运算,简单的判断可用
    s='jfjklhuggu'
    print(func3(s))
    写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,
    并将新内容返回给调用者。
    def lenth(a):
        list = []
        count=0
        for i in a:
            count+=1
        if count>2:
            return a[:2]
        else:
            return a
    l=[1,2,3,4]
    print(lenth(l))
    
    def func4(argv):return argv[:2]#巧用切片,不到指定长度也不报错。
    l=[1,2,3,4]
    print(func4(l))
    写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
    figure, abc, blank, other = 0, 0, 0, 0 #当变量是可迭代时,可以不用global,内部也能使用。
    def num(a):
        global figure, abc, blank, other#global,声明一个全局变量。把全局变量变成局部变量。
        #也可以不用global,直接把figure, abc, blank, other = 0, 0, 0, 0 放到函数里面使用。
        for i in a:
            if i.isdigit():
                figure+=1
            elif i.isalpha():
                abc+= 1
            # elif i==' ':
            #     blank += 1
            elif i.isspace():#也可以是 elif i==' ':
                blank += 1              #blank += 1
            else:
                other+=1
        result= '该字符串中数字有{}个,字母{}个,空格{}个,其他{}个'
                .format(figure,abc,blank,other)
        return result
    s='jkjfF 46CD44*  $'
    print(num(s))
    写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,
    并返回结果。
    def empty_content(a):
        for i in a:
            if i==' ':
                return True
    
    s='hufhicdw jkjjo'
    print(empty_content(s))
    写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,
    并将新内容返回给调用者。
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    PS:字典中的value只能是字符串或列表
    def func7(argv):
        for i in argv:
            argv[i] = argv[i][:2]#切片 一定要多加练习
        return argv
    dic = {"k1": "v1v1", "k2": [11, 22, 33, 44]}
    print(func7(dic))
    写函数,接收两个数字参数,返回比较大的那个数字。
    def max(x,y): return x if x>y else y
    print(max(466,123))
    写函数,用户传入修改的文件名,与要修改的内容,执行函数,
    完成整个文件的批量修改操作(进阶)。
    import os   #引入的模块尽量放到外面
    def func(path,old_content,new_content): #函数可以把题目写活
        
        with open(path,encoding='utf-8') as f1,
             open(path+'bak',encoding='utf-8',mode='w')as f2:
            for line in f1:
                new_line=line.strip().replace(old_content,new_content)
                f2.write('%s
    ' % new_line) #%s
    的话,第一行会空着,没有内容。
        os.remove(path)
        os.rename(path+'bak',path)
    func('modification','xiaohua','NB')
    写一个函数完成三次登陆功能,再写一个函数完成注册功能(进阶)
    def login():
        i=1
        while i<4:
            username =input('请输入你的账号:Q或者q退出').strip()
            password =input('请输入你的密码:Q或者q退出').strip()
            if username.upper()=='Q'or password.upper()=='Q':
                break
            elif username =='zhangsan'and password =='123':
                print('恭喜你登录成功')
                break
            else:
                print('你的账号或者密码错误,请重新登录,还剩余%d次机会' % (3-i))
    
            i+=1
    login()
    def regisster(): flag=True while flag: username = input('请输入你的账号:Q或者q退出').strip() password =input('请输入你的密码:Q或者q退出').strip() if username.upper()=='Q'or password.upper()=='Q': # global flag flag=False else: dic={'name':'zhangsan','pass':'123'} if username not in dic['name']: print('您还没有账号,请注册') username = input('请输入你的账号:Q或者q退出').strip() password = input('请输入你的密码:Q或者q退出').strip() if username.upper() == 'Q' or password.upper() == 'Q': # global flag flag = False else: dic = {'name': 'zhangsan', 'pass': '123'} if username not in dic['name']: password1 = input('请再次输入你的密码:Q或者q退出').strip() if password==password1: print('恭喜你登录成功') else: print('您两次输入的密码不一致,请重新输入').strip() else: print('您输入的账号已经存在,请重新注册') username = input('请输入你的账号:Q或者q退出').strip() password = input('请输入你的密码:Q或者q退出').strip() regisster()
    
    
    def regisster():
        flag=True
        while flag:
            username = input('请输入你的账号:Q或者q退出').strip()
            password =input('请输入你的密码:Q或者q退出').strip()
            if username.upper()=='Q'or password.upper()=='Q':
                # global flag
                flag=False
            else:
                with open('register',encoding='utf-8') as f1:
                    for line in f1:
                        line=line.split()
                    if username not in line[0]:
                        print('您还没有账号,请注册')
                        username = input('请输入你的账号:Q或者q退出').strip()
                        password = input('请输入你的密码:Q或者q退出').strip()
                        if username.upper() == 'Q' or password.upper() == 'Q':
                            flag = False
                        else:
                            if username not in  line[0]:
                                password1 = input('请再次输入你的密码:Q或者q退出').strip()
                                if password==password1:
                                    print('恭喜你登录成功')
                                    with open ('register',encoding='utf-8',mode='a') as f1:
                                        f1.write('
    '+  username +  password)
                                else:
                                    print('您两次输入的密码不一致,请重新输入').strip()
                            else:
                                print('您输入的账号已经存在,请重新注册')
                                username = input('请输入你的账号:Q或者q退出').strip()
                                password = input('请输入你的密码:Q或者q退出').strip()
    regisster()
    
    def register():
        while True:
            dic={{'username':'zhangsan','password':'123'},}
            username = input('请输入你的账号:Q或者q退出').strip()
            password =input('请输入你的密码:Q或者q退出').strip()
            if username not in dic['username']:
                print('您输入的用户不存在,请完成登录')
                username = input('请输入你的账号:Q或者q退出').strip()
                password1 = input('请输入你的密码:Q或者q退出').strip()
                if username == dic['username']:
                    print('用户名已经存在,请重新登录')
                else:
                    password2 = input('请再次确认密码:Q或者q退出').strip()
                    if password1==password2 :
                        print('恭喜你注册成功')
                    else:
                        password2 = input('您两次输入密码不一致,请再次确认密码:Q或者q退出').strip()
    
    
    def login_3():
        dic = {'name': ['小狗'], 'password': ['123']}
        flag=True
        while flag:
            choice=input('登录请输入Ll;注册请输入R
    ').strip()
            if choice.upper()=='L':
                i=0
                while i<3:
                    username=input('请输入用户名:').strip()
                    password=input('请输入密码:').strip()
                    if username  in dic['name'] and password in dic['password']:
                        print( '登录成功')
                        i=5
                        flag=False
                    else:
                        print( '用户名或者密码有误,您还有%s次登录机会' % (2-i))
                        if i==2:
                            flag = False
    
                    i += 1
    
            elif choice.upper()=='R':
                new_username=input('请输入要注册的用户名:').strip()
                new_password=input('请输入注册密码:').strip()
                dic['name'].append(new_username)
                dic['password'].append(new_password)
                print('注册成功')
    
    
    # print(login_3())
    login_3()


  • 相关阅读:
    js-排序算法
    django csrf token添加
    django mongodb配置
    django logging
    linux文件行首行尾添加或替换
    linux 大小写转化
    linux $参数
    mysql 基本操作
    生产者消费者示例
    python smtplib发email
  • 原文地址:https://www.cnblogs.com/daofaziran/p/9036686.html
Copyright © 2011-2022 走看看