博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day03-函数基础
阅读量:5281 次
发布时间:2019-06-14

本文共 11159 字,大约阅读时间需要 37 分钟。

'''练习题:''' '''1. 文件a1.txt内容     序号     部门      人数      平均年龄      备注     1       python    30         26         单身狗     2       Linux     26         30         没对象     3       运营部     20         24         女生多     .......     通过代码,将其构建成这种数据类型:     [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},......]''' # list_result = [] # f = open("a1.txt", encoding="utf-8") # list_head = f.readline().strip().split() # for line in f: #     dic = {} #     list_content = line.strip().split() #     for i in range(len(list_head)): #         if i == 2 or i == 3: #             dic[list_head[i]] = int(list_content[i]) #         else: #             dic[list_head[i]] = list_content[i] #     list_result.append(dic) # f.close() # print(list_result) '''2. 传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。''' # def my_type_count(content): #     count_digit = 0 #     count_alpha = 0 #     count_space = 0 #     count_other = 0 #     for i in content: #         if i.isdigit(): #             count_digit += 1 #         elif i.isalpha(): #             count_alpha += 1 #         elif i.isspace(): #             count_space += 1 #         else: #             count_other += 1 #     print("输入内容中包含数字{}个,字母{}个,空格{}个,其它{}个".format(count_digit, count_alpha, count_space, count_other)) # content = input("请输入您想统计的内容: ") # my_type_count(content) '''3. 写函数,接收两个数字参数,返回比较大的那个数字。''' # def my_max(x, y): #     return x if x > y else y # print(my_max(30, 20)) '''4. 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。                 dic = {"k1": "v1v1", "k2": [11,22,33,44]}                 PS:字典中的value只能是字符串或列表''' # def check_dic_len(dic): #     for k,v in dic.items(): #         if len(v) > 2: #             dic[k] = v[:2] #     print(dic) # dic = {"name":"elisun", 'li':[1,2,3,4]} # check_dic_len(dic) '''5. 写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如 传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。''' # def ret_dic(lis): #     if type(lis) != list: #         return "请传入列表类型" #     dic = {} #     for i in lis: #         dic[lis.index(i)] = i #     print(dic) # ret_dic([11, 22, 33]) '''6. 写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追 加到一个student_msg文件中。''' # def info_table(name, sex, age, edu): #     with open("info_table.txt", encoding="utf-8", mode="a") as f: #         info_format = "\t".join([name, sex, age, edu]) #         f.write(info_format+"\n") # # name = input("姓名: ") # sex = input("性别: ") # age = input("年龄: ") # edu = input("学历: ") # # info_table(name, sex, age, edu) '''7. 对第6题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。''' # def info_table(name, age, edu, sex="男"): #     with open("info_table.txt", encoding="utf-8", mode="a") as f: #         info_format = "\t".join([name, sex, age, edu]) #         f.write(info_format + "\n") # # while 1: #     opt = input("回车输入个人信息,输入Q或者q退出: ") #     if opt.upper() == "Q": #         break #     else: #         name = input("姓名: ").strip() #         sex = input("性别(不输入时默认为'男'): ").strip() #         age = input("年龄: ").strip() #         edu = input("学历: ").strip() #         if name == "" or age == "" or edu == "": #             print("都是必填项,有未填信息,请重新输入") #             continue #         if sex == "": #             info_table(name, age, edu) #         else: #             info_table(name, sex, age, edu) '''8. 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作。''' # def replace_content(): #     filename = input("请输入要修改的文件名: ") #     content = input("要修改的内容: ") #     content_new = input("替换成新的内容: ") # #     import os #     with open(filename, encoding='utf-8') as f1, \ #             open("temp.txt", encoding='utf-8', mode='w') as f2: #         for line in f1: #             new_line = line.replace(content, content_new) #             f2.write(new_line) #     os.remove(filename) #     os.rename("temp.txt", filename) # replace_content() '''9. 读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?       a=10       b=20       def test5(a,b):          a=3          b=5          print(a,b)       c = test5(b,a)       print(c)''' # a是3,b是5,c是None。 # 因为执行函数时a,b在函数内部有定义,所以优先取局部空间的值。c为调用函数后得到的返回值,而该函数没有定义返回值,所以为默认值None。 '''10. 写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等),将每个实参的每个元素依次添加到函数的动态参数args里面. #     例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33)''' # def args(*args): #     print(args) # args(*[1,2,3],*(22,33)) '''11. 写函数,传入函数中多个实参(实参均为字典),将每个实参的键值对依次添加到函数的动态参数kwargs里面.       例如 传入函数两个参数{‘name’:’alex’} {‘age’:1000}最终kwargs为{‘name’:’alex’ ,‘age’:1000}''' # def dic(**kwargs): #     print(kwargs) # dic(**{'name':'alex'}, **{'age':1000}) '''12. 下面代码成立么?如果不成立为什么报错?怎么解决?       题目一:          a = 2          def wrapper():                print(a)          wrapper()       题目二:          a = 2          def wrapper():                a += 1             print(a)          wrapper()        题目三:          def wrapper():                a = 1                def inner():                   print(a)                inner()             wrapper()       题目四:          def wrapper():                a = 1                def inner():                   a += 1                   print(a)                inner()             wrapper()''' # 题目一:成立。 # 题目二:不成立。因为wrapper函数内有赋值a=a+1,所以调用该函数时a被认为是wrapper内部变量,但是在计算右边的a+1时发现a没在wapper内被定义,所以报错。 #        在函数内部使用global关键字声明变量a为全局变量。 # 题目三:成立。 # 题目四:不成立。因为inner函数内有赋值a=a+1,所以当该函数被调用时a被认为是inner内部变量,而计算a+1时又发现a没在inner内部被定义,所以报错。 #        在inner内部使用关键字nonlocal声明a,来引用非全局的父级变量。 '''13. 写函数,接收两个数字参数,将较小的数字返回.''' # def min(x, y): #     return x if x < y else y # print(min(100, 10)) '''14. 写函数,接收一个参数(此参数类型必须是可迭代对象),将可迭代对象的每个元素以’_’相连接,形成新的字符串,并返回.       例如 传入的可迭代对象为[1,'老男孩','武sir']返回的结果为’1_老男孩_武sir’''' # def str_join(*args): #     return "_".join('%s' %i for i in args) # ret=str_join(*[1,'老男孩','武sir']) # print(ret) '''15. 写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}       例如:如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)''' # def max_min(*args): #     dic = {} #     dic[max(args)] = "最大值" #     dic[min(args)] = "最小值" #     return dic # ret = max_min(2,5,7,8,4,100,200,-1) # print(ret) # '''16. 写函数,传入一个参数n,返回n的阶乘 #     例如:cal(7)  计算7*6*5*4*3*2*1''' # def cal(num): #     if num >= 0: #         sum = 1 #         for i in range(1,num+1): #             sum *= i #         print(sum) #     else: #         print("负数没有阶乘") # cal(7) '''17. 写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组       例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]''' # def poker(): #     poker_list = [] #     color = ["黑桃", "红心", "草花", "方块"] #     j_k = ["J", "Q", "K"] #     for col in color: #         poker_list.append((col, "A")) #     for num in range(2, 11): #         for col in color: #             poker_list.append((col, num)) #     for a in j_k: #         for col in color: #             poker_list.append((col, a)) #     print(poker_list) # # poker() '''18. 有如下函数:       def wrapper():             def inner():                print(666)          wrapper()       你可以任意添加代码,用两种或以上的方法,执行inner函数.''' #第一种: # def wrapper(): #     def inner(): #         print(666) #     inner() # wrapper() #第二种: # def wrapper(): #     def inner(): #         print(666) #     return inner # ret = wrapper() # ret() '''作业: 用函数完成登录注册以及购物车的功能。         1,启动程序,用户可选择四个选项:登录,注册,购物,退出。         2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中。         3,用户登录,用户名密码从文件中读取,进行三次验证,验证不成功则退出整个程序。         4,用户登录成功之后才能选择购物功能进行购物,购物功能(就是将购物车封装到购物的函数中)。         5,退出则是退出整个程序。''' # # 登录 # def login(): #     dic = {} #     count = 3 #     with open("user_auth.txt", encoding="utf-8", mode="r") as f: #         for i in f: #             l = i.strip().split(" ") #             dic[l[0]] = l[1] #     while count > 0: #         username = input("请输入账户名: ") #         password = input("请输入密码: ") #         if username in dic and password == dic[username]: #             global login_session #             login_session = 1  #将登录状态置为非0,表示已登录 #             print("登录成功,可以开始购物了") #             return shopping() #         elif username not in dic: #用户名不存在则跳到注册页 #             print("用户名不存在,请注册账户") #             return register() #         else: #             count -= 1 #             if count == 0: #                 print("错误次数过多,锁定60分钟") #             else: #                 print("用户名或密码错误,还能尝试" + str(count) + "次") # # # 注册 # def register(): #     while 1: #         username = input("请输入您要注册的用户名: ") #         password = input("请输入您的注册密码: ") #         s = username + " " + password #         with open("user_auth.txt", encoding="utf-8", mode="r+") as f: #             for line in f: #                 l = line.split(" ") #                 if username == l[0]: #                     print("用户名已存在: ") #                     break #             else: #                 f.write(s+"\n") #                 print("注册成功") #                 break # # # # 购物 # def shopping(): #     # 商品信息 #     goods = {"1":{"name":"电脑", "price":1999}, #              "2":{'name':"鼠标", 'price':50}, #              "3":{'name':"键盘", 'price':100} #             } # #     # 购物车 #     shopping_cart = {} # #     # 判断是否已登录 #     global login_session #     if login_session == 0: #         print("请先登录账号") #         return login()  #未登录时跳向登录页 # #     # 充值金额判断 #     while 1: #         money = input("请输入您要充值的金额: ") #         if money.isdigit(): #             print("充值成功,账户现存金额%s" % money) #             break #         else: #             print("非法字符,请重新输入") # #     while True: #         for i in goods: #             print(i, goods[i]["name"], goods[i]["price"]) #         num = input("请输入您要购买的商品编号或者输入n结算或者按Q(q)退出: ") #         if num in goods: #             count = shopping_cart.setdefault(num,0) #             shopping_cart[num] = count + 1 # #         elif num == "n": #             print("开始结算") #             consum_money = 0 #             for a in shopping_cart: #                 consum_money += goods[a]["price"]*shopping_cart[a]  # 计算消费总额 #             if consum_money > int(money): #                 for i in shopping_cart: #                     print(i, goods[i]['name'], shopping_cart[i], goods[i]['price']) #                 del_num = input("余额不足,请选择要删除多余的商品编号:") #                 if del_num in shopping_cart: #                     shopping_cart[del_num] = shopping_cart[del_num] - 1  #减少商品 #                 if shopping_cart[del_num] == 0: #                     shopping_cart.pop(del_num) #             else: #                 print("本次消费记录如下") #                 for i in shopping_cart: #                     print(goods[i]['name'], shopping_cart[i], goods[i]['price']) #                 surplus_money = int(money) - consum_money  # 计算余额 #                 print("此次共消费%s,账户余额%s" % (consum_money, surplus_money)) #                 break #         elif num.lower() == "q": #             print("欢迎下次光临") #             break # #         else: #             print("您输入的商品不存在") #             continue # # 退出 # def f_quit(): #     print("欢迎下次光临") # def main(): #     opt = input("请输入您的选项: A:登录 | B:注册 | C:购物 | D:退出: ") #     if opt == "A": #         login() #     elif opt == "B": #         register() #     elif opt == "C": #         shopping() #     elif opt == "D": #         f_quit() #     else: #         print("选择有误") # # login_session = 0 #定义登录状态,0为未登录,非0为已登录。 # main()   ## cat user_auth.txt
elisun 123 zhangsan 123 lisi 456

转载于:https://www.cnblogs.com/elisun/p/9910226.html

你可能感兴趣的文章
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>
2017前端面试题总结
查看>>
SWIFT国际资金清算系统
查看>>
站立会议第四天
查看>>
利用AMPScript获取Uber用户数据的访问权限
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>