zoukankan      html  css  js  c++  java
  • python 函数初识

    ##########################总结#####################

    初识函数

    定义: 对动作或者功能的封装.
    语法:
    def 函数名(形参):
    函数体(return)

    函数名(实参)

    形参: 在函数声明的位置写的变量
    1. 位置参数
    2. 默认值参数.
    实参: 在函数调用的位置给出的具体的值
    1. 位置参数
    2. 关键字参数
    3. 混合 位置, 关键字
    传参: 把实参传递给形参的过程

    return: 返回, 程序如果运行到return, 函数结束运行.
    1. 当我的函数不写return, 表示默认返回None
    2. 函数中写return, 返回None
    3. return 值, 有一个返回值
    4. return 值1, 值2, 值3 多个返回值, 返回的是元组

    ################################作业######################

    2, 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 13579
    # 并将其作为新列表返回给调用者。

    # def func(lst):
    #     return list(lst[1::2])
    #
    # print(func([1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,34,45,6]))

    3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。

    # def func(s):
    #     return len(s) > 5
    #
    # print(func("哈哈1233"))

    4. 写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。

    def func(lst):
    if len(lst) > 2:
    return lst[0], lst[1]
    return lst[0:2]
    print(func(['11','2','3','4']))

    5,写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。

    def func(s=""):
        shuzi = 0
        zimu = 0
        kongge = 0
        qita = 0
        for c in s:
            if c.isdigit():
                shuzi += 1
            elif c.isalpha():
                zimu += 1
            elif c == " ":
                kongge += 1
            else:
                qita += 1
    
        return shuzi, zimu, kongge, qita
    
    print(func("jin san pang zuo tian lai zhao alex yao 5000 kuai $$$"))

    6. 写函数,接收两个数字参数,返回比较大的那个数字。

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

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

    def number(b):
        dic={}
        for i in range(len(b)):
            dic[i]=b[i]
        return dic
    print(number([11,22,33]))

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

    # name = input('请输入姓名:')
    # xinbie = input('请输入性别:')
    # age = input('请输入年纪:')
    # xueli = input('请输入学历:')
    #
    # def tongji(a,b,c,d):
    #     with open('student_msg',mode="a+",encoding='utf-8') as f:
    #         f.write("%s+%s+%s+%s+
    " %(a,b,c,d))
    # tongji(name,xinbie,age,xueli)
    10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
    # def func(name, age, edu, gender="男"):
    #     f = open("student_msg", mode="a", encoding="utf-8")
    #     f.write(name+"_"+gender+"_"+age+"_"+edu+"
    ")
    #     f.flush()
    #     f.close()
    # while 1:
    #     n = input("请输入你的名字:")
    #     g = input("请输入你的性别:")
    #     a = input("请输入你的年龄:")
    #     e = input("请输入你的学历:")
    #
    #     if g == "":
    #         func(n, a, e)
    #     else:
    #         func(n, a, e, g)
    #
    #     content = input("信息录入完毕, 是否继续录入(Q退出)")
    #     if content.upper() == "Q":
    #         break

    11,# 写函数,用户传入修改的文件名,与要修改的内容,执行函数,

    # 完成整个文件的批量修改操作(升级题, 此题认真阅读和理解. 应该有3个参数才对)

    
    
    def modify_file(file,old,new):
    with open(file,mode='r',encoding='utf-8') as f1,
    open(file+'bak',mode='w',encoding='utf-8') as f2:
    for i in f1:
    i=i.replace(old,new)
    f2.write(i)
    os.remove(file)
    os.rename(file+'bak',file)
    modify_file("a.txt", "name", "bbb")

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

    def regist():
        uname = input("请输入你的用户名:")  # wusir
        # 判断一下用户名是否重复:
        f = open("userinfo", mode="r", encoding="utf-8")
        for line in f: # alex_123
            un = line.split("_")[0] # 文件中的用户名 alex
            if un == uname: # 一次判断 没有判断出结果.必须等整个循环结束才能出结果
                print("对不起. 您的用户名已经重复. ")
                return
        else:
            print("用户名可用!")
        f.close()
        upwd = input("请输入你的密码:")
        f = open("userinfo", mode="a", encoding="utf-8")
        f.write(uname+"_"+upwd+"
    ")
        f.flush()
        f.close()
    # regist()
    def login():
        count = 1
        while count <= 3:
            uname = input("请输入你的用户名:")
            upwd = input("请输入你的密码:")
            f = open("userinfo", mode="r", encoding="utf-8")
            for line in f:
                u,p = line.strip().split("_")
                if uname == u and upwd == p:
                    print("登录成功")
                    return True
            else:
                print("登录失败, 用户名或密码错误")
                count += 1
    login()
    不怕大牛比自己牛,就怕大牛比自己更努力
  • 相关阅读:
    Apache Hadoop 3.0.0 Release Notes
    控制你的数据,你才能得到有效且高效的数据结果
    读写分离与主从同步数据一致性
    代理ip proxy
    maximize_window fullscreen_window minimize_window
    HTTP 代理原理及实现
    browser user agent
    res_d_l =[{'contents':d.contents,'href':d.attrs['href']} for d in rd] 泛型
    tmp
    Connection reset by peer
  • 原文地址:https://www.cnblogs.com/zaizai1573/p/10084099.html
Copyright © 2011-2022 走看看