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 = "\n"+username + "|" + password
            f.write(temp)
            f.close()
            print("注册成功")
            shopping()

def main():
    t = input("1:登录  2:注册"+"\n"+"\033[47;1m\033[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=检查已买商品]"+"\n"+"请输入要买商品的序号或 Q or C:"+"\n")
        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],你的余额还剩下:\033[31;1m[%s]\033[0m  "%(p_item,salary))
                else:
                    print("你的余额不足,剩余:\033[31;1m[%s]\033[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("你的余额:\033[41;1m[%s]\033[0m".center(51,'*') % salary)
main()

 

posted @ 2017-03-20 14:49  墨羽丶  阅读(111)  评论(0编辑  收藏  举报