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()