• python基础之函数


    函数的定义

    函数的定义主要有如下要点:

    • def:表示函数的关键字
    • 函数名:函数的名称,日后根据函数名调用函数
    • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
    • 参数:为函数体提供数据
    • 返回值:当函数执行完毕后,可以给调用者返回数据。
    创建函数
    例如下列代码
     1 #创建函数
     2 def f1(a):
     3     if a > 2:
     4         print("")
     5 f1(5)
     6 
     7 #形式参数
     8 #name叫做函数f()的形式参数
     9 def f(name):
    10     print(name)
    11 #"小明"叫做函数f()的实际参数
    12 f("小明")
    13 
    14 #默认参数
    15 #在f1()定义了一个默认参数:age=22
    16 def f1(name,age=22):
    17     print(name,age)
    18 #使用的是指定参数
    19 f1("小明",age = 33)
    20 #使用的是默认参数,需要放在参数列表的最后面
    21 f1("大明")
    22 
    23 
    24 #指定参数
    25 #形式参数给了几个参数就需要传几个参数
    26 def f1(name,age):
    27     print(name,age)
    28 #按照顺序,给函数f1传递实际参数
    29 f1("xiaoxue",22)
    30 #指定参数,指定name=22,age=33
    31 f1(name=22,age=33)
    32 
    33 
    34 #万能参数
    35 def f3(*args,**kwargs):
    36     print(args,kwargs)
    37 f3(111,222,333,444,k1="v1",k2 ="v2")
    *args **kwargs
     1 *args
     2 #* 输入任意参数(列表,字典,或是字符串,字符),存成元组
     3 def f1(*args):
     4     print(args)
     5 li = [11,22,33,44]
     6 r = f1(li)
     7 print(r)
     8 结果:([11, 22, 33, 44],)
     9 
    10 def f1(*args):
    11     print(args,type(args))
    12 f1(11,22,333,44,"11111")
    13 如果函数里面有*,传什么东西都会搞到元组里面
    14 li = [11,222,33,"alex"]
    15 f1(li)#没有*号,把列表当做一个整体去放到元组里面
    16 f1(*li)#有*号,把列表里面每一个元素当做一个整体放到元组里面,按照顺序进行排列
    17 li = "alex"
    18 f1(li)#没有带*号整体当做一个参数放到元组里面,按照顺序
    19 f1(*li)#有*号把字符串单个字母当做一个参数放到元组里面
    20 
    21 **kwargs
    22 #** 输入指定参数,存成字典
    23 def f2(**kwargs):
    24      print(kwargs)
    25 #会把传入的指定参数等号左边为key,右边为values,存成字典的形式
    26 print(f2(name = "123"))
    27 
    28 def f2(**args):
    29    print(args,type(args))
    30 f2(name = "alex",age = 37)#要写成指定参数,等号左面是key,右边是values
    31 dic = {"k1":"v1","k2":"v2"}
    32 li = ["xiaogou","lingque","yinjiao"]
    33 f2(n1 = dic)#输出结果,字典里面套字典
    34 f2(n2 = li)#输出结果,字典里面套列表
    35 f2(**dic)#两个**,输出成字典
    函数的返回值return
     1 def f1(a):
     2     result = []#写一个空列表
     3     for item in a:#传入的值赋值给item
     4         if item > 22:#当item值大于22时
     5             result.append(item)#在列表里追加这个大于22的值
     6    # 默认return值为None
     7    #在函数中,一旦执行return,函数执行过程立即终止
     8     return result #return result这个空字典
     9    #print(456)不再执行
    10     print(456)
    11 li = [11,22,33,44]
    12 r = f1(li)
    13 print(r)
     购物车
    #! /usr/bin/env pythondef login(username,password):
    #
    def login(username,password):
        """
        用于用户登录
        :param username:用户输入的用户名
        :param password:用户输入的密码
        :return:是否登录成功,返回Ture or False
        """
        f = open("db","r")
        for line in f:
            line_list = line.strip().split("|")
            if line_list[0] == username and line_list[1] == password:
                return True
        return False
    
    
    def register(username,password):
        """
        用于用户注册
        :param username:用户所注册的用户名
        :param password: 用户所注册的密码
        :return: 注册成功
        """
    
    
        f = open("db", "r")
        if username =="" or password =="":
            print("输入的不能为空")
        else:
    
            for line in f:
                i = username  in line
            if  i:
                print("账户已存在")
            else:
                f = open("db","a")
                temp = "
    "+username + "|" + password
                f.write(temp)
                f.close()
                print("注册成功")
                shopping()
    
    def main():
        t = input("1:登录  2:注册"+"
    "+"33[47;1m33[47;0m"+":")
        if t == "1":
            user = input("请输入用户名:").strip()
            pwd  = input("请输入密码:").strip()
            r = login(user, pwd)
            if user =="" or pwd =="":
                print("输入的值不能为空")
            if r:
                print("登录成功")
                shopping()
            else:
                print("登录失败")
        elif t =="2":
            user = input("请输入用户名:")
            pwd = input("请输入密码:")
            register(user,pwd)
    
    
    
    def shopping():
    
        salary = input("请输入你的工资:")
        if salary.isdigit():
            salary = int(salary)
        else:
            exit("输入的格式为数字")
        welcome_msg = '欢迎来购物'.center(50,'-')
        print(welcome_msg)
        exit_flag = False #标志位
        product_list = [
            ("Iphone",5800),
            ("coffee",30),
            ("Mac",6800),
            ("Mac air",6900),
            ("xiaomi",700),]
        shop_car = []
    
        while exit_flag is not True:
            # for product_item in product_list:
            #     p_name,p_price = product_item
            print("商品列表".center(50,'-'))
            for item in enumerate(product_list):
                index= item[0]
                p_name = item[1][0]
                p_price = item[1][1]
                print(index,'.',p_name,p_price)
            user_choice = input("[q=退出,c=检查已买商品]"+"
    "+"请输入要买商品的序号或 Q or C:"+"
    ")
            if user_choice.isdigit():#肯定选择商品 isdigit判断是否为数字
                user_choice = int(user_choice)
    
                if user_choice > len(product_list):
                    print("抱歉,没有此商品")
                else:
                    p_item = product_list[user_choice]
                    if p_item[1] <= salary:#买得起
                        shop_car.append(p_item)#放入购物车
                        salary -= p_item[1]#减钱
                        print("已添加到购物车的商品:[%s],你的余额还剩下:33[31;1m[%s]33[0m  "%(p_item,salary))
                    else:
                        print("你的余额不足,剩余:33[31;1m[%s]33[0m"% salary)
            else:
                if user_choice =='q':
                    print("您已购买的商品".center(40,'*'))
                    for item in shop_car:
                        print(item)
                    print("您的余额:[%s]" % salary)
                    print("欢迎下次光临".center(41, '*'))
                    exit_flag = True
                elif user_choice =='c':
                    print("您已购买的商品".center(40, '*'))
                    for item in shop_car:
                        print(item)
                    print("你的余额:33[41;1m[%s]33[0m".center(51,'*') % salary)
    main()
  • 相关阅读:
    [LeetCode]Interleaving String关于遍历和动态规划
    [LeetCode]Power
    [LeetCode]Two Sum
    [LeetCode]wildcard matching通配符实现之贪心法
    [LeetCode]wildcard matching通配符实现之动态规划
    [LeetCode]wildcard matching通配符实现之递归
    回文分割
    iOS开发之应用内检测手机锁屏,解锁状态
    iOS 拨打电话
    iOS 中文转拼音
  • 原文地址:https://www.cnblogs.com/qwerdf/p/6588955.html
Copyright © 2020-2023  润新知