小圆圈第三章答案
小圆圈第三章练习题
-
1.写函数,计算传入数字参数的和。(动态传参)
def sum_count(*args): return sum(args) v = sum_count(1, 2, 3, 4) # 传参数 print(v)
-
2.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
import os def func(): usee_path = input('请输入要修改的文件名:') if not os.path.exists(usee_path+'.txt'): print('输入的文件不存在') usee = input('要修改的内容:') usee_s = input('内容修改为 :') with open(usee_path+'.txt',mode='r',encoding='utf-8') as f: for i in f : print(i.strip().replace(usee,usee_s)) func()
-
3.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def func(*args): if not all(args): return '有空内容' return '没有空内容' v = func(1,2,3,0) print(v)
-
4.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容(对value的值进行截断),
并将新内容返回给调用者,注意传入的数据可以是字符、list、dictdic = {'k1':'alex','k2':'aaaaaaaaaaaaaaa','k3':'sb'} def func(a): for k,v in a.items(): if not len(v) == 2: a[k]=v[ : 2] return a v = func(dic) print(v)
-
5.解释闭包的概念
def func(arg): def info(): return arg return info v = func('alex') v1 = v() print(v1)
-
6.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃a’)]lst = [ i for i in range(2,11)] lis = ['j','q','k','a'] data = lst + lis info = ['红心','黑桃','梅花','红方'] v =[] for line in info: for i in data: i = tuple((line,i)) v.append(i) print(v)
-
7.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
def func(*args): count = max(args) count_min = min(args) return {'max':count,'min':count_min} v = func(1,2,3,4,33,4,4,5,5566,) print(v)
-
8,8. 写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径) 返回圆的面积
调用函数area(‘正方形’,边长) 返回正方形的面积
调用函数area(‘长方形’,长,宽) 返回长方形的面积
def area(a1,a2,a3=0): ''' 计算 图形面积 :param a1: 圆形 :param a2: 半径/长 :param a3:宽 :return: ''' def circular(): print('圆的面积: %s'%(3.14*a2*a2,)) def square(): print('正方形的面积:%d'%(a2*a2,)) def rectangle(): print('长方形的面积 %d'%(a3*a2,)) # 判断瀛湖输入的图形以调用 if a1 =='圆形': circular() elif a1 =='正方形': square() else: rectangle() # 用户输入 usee_graphical = input('请输入要计算的图形 :') if usee_graphical == '圆形': usee_radius = int(input('圆的半径:')) area(usee_graphical,usee_radius) elif usee_graphical == '正方形': usee_wide = int(input('正方形的边长:')) area(usee_graphical,usee_wide) elif usee_graphical=='长方形': usee_long = int(input('长方形的长:')) usee_long_wode = int(input('长方形的宽 :')) area(usee_graphical,usee_long,usee_long_wode)
-
9 .写函数,传入一个参数n,返回n的阶乘
def info (arg): sum =1 for i in range(1,arg): sum *=i return sum v = info(7) print(v)
-
10 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
dic = {'账号': 'alex', '密码': 123, '登陆': false} def func(arg): def info(): if dic['登陆'] == true: print('已经登录') arg() usee = input('请输入账号:') usee_s = int(input('请输入密码:')) if usee == dic['账号'] and usee_s == dic["密码"]: print('登陆成功') dic['登陆']=true arg() else: print('账号或密码错误') return info @func def inner(): print('____欢迎来到_____') @func def data(): print('alexnb') inner() data()
-
11.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
name=['alex','wupeiqi','yuanhao','nezha'] v = map(lambda x :x+'_sb',name) for i in v: print(i)
-
12.用filter函数处理数字列表,将列表中所有的偶数筛选出来
age = [1,2,34,4,5,66,] v = filter(lambda x :x%2==0,age) for i in v: print(i)
13.如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
通过哪个内置函数可以计算购买每支股票的总价
用filter过滤出,单价大于100的股票有哪些
portfolio = [ {'name': 'ibm', 'shares': 100, 'price': 91.1}, {'name': 'aapl', 'shares': 50, 'price': 543.22}, {'name': 'fb', 'shares': 200, 'price': 21.09}, {'name': 'hpq', 'shares': 35, 'price': 31.75}, {'name': 'yhoo', 'shares': 45, 'price': 16.35}, {'name': 'acme', 'shares': 75, 'price': 115.65} ] data = map(lambda x:x['shares']*x['price'],portfolio) for i in data: print(i) v = filter(lambda x :x['price']>100,portfolio) for i in v: print(i)
-
14.有列表 li = [‘alex’, ‘egon’, ‘smith’, ‘pizza’, ‘alen’], 请将以字母“a”开头的元素的首字母改为大写字母;
li = ['name','egon','smith','pizza','aken'] lst = [i.capitalize() for i in li] print(lst)
-
有名为
poetry.txt
的文件,其内容如下,请删除第三行;
昔人已乘黄鹤去,此地空余黄鹤楼。
黄鹤一去不复返,白云千载空悠悠。
晴川历历汉阳树,芳草萋萋鹦鹉洲。
日暮乡关何处是?烟波江上使人愁。with open('a.txt',mode='r',encoding='utf-8')as f,open('b.txt',mode='w',encoding='utf-8')as f1: data= [ i for i in f] data.pop(2) for i in data: f1.write(i)
-
有名为
username.txt
的文件,其内容格式如下,写一个程序,判断该文件中是否存在”alex”, 如果没有,则将字符串”alex”添加到该文件末尾,否则提示用户该用户已存在;def func(): with open('a.txt',mode='r+',encoding='utf-8')as f: for i in f: if 'alex' in i.strip(): return '存在' f.write('\nalex') return '以写入' v = func() print(v)
-
有名为user_info.txt的文件,其内容格式如下,写一个程序,删除id为100003的行
-
pizza,100001 alex, 100002 egon, 100003
import os with open('a.txt',mode='r',encoding='utf-8')as f,open('a1.txt',mode='w',encoding='utf-8')as f1: for i in f : if '100003' in i: continue else: f1.write(i) os.remove('a.txt') os.rename('a1.txt','a.txt')
-
有名为user_info.txt的文件,其内容格式如下,写一个程序,将id为100002的用户名修改为
alex li
;import os with open('a.txt',mode='r',encoding='utf-8')as f,open('a1.txt',mode='w',encoding='utf-8')as f1: for i in f: if '100002' in i: i = i.split(',') i[0]= 'alex li' for line in i: f1.write(line) else: f1.write(i) os.remove('a.txt') os.rename('a1.txt','a.txt')
-
写一个计算每个程序执行时间的装饰器;
import time def func(arg): def info(): count_time = time.time() arg() count_time_s = time.time() return float(count_time_s) -float(count_time) return info @func def inner(): print('hahaha\n') print('hahaha\n') # print('hahaha\n') 多打印几行 (50) 不然时间0.0 print(inner())
-
lambda是什么?请说说你曾在什么场景下使用lambda?
lambda 是匿名函数 def func(a): return a*2 func(4) a = lambda x:x*2 print(a)
-
题目:写一个摇骰子游戏,要求用户压大小,赔率一赔一。要求:三个骰子,每个骰子的值从1-6,摇大小,每次打印摇出来3个骰子的值。
# 题目:写一个摇骰子游戏,要求用户压大小,赔率一赔一。要求:三个骰子,每个骰子的值从1-6,摇大小,每次打印摇出来3个骰子的值。 import random print('----欢迎来到摇骰子游戏-----') money = int(input('请输入你的本金:')) while 1: lst = [random.randint(1,7) for i in range(3)] s = sum(lst) usee = int(input('请输入(1 押大,2 押小 0 退出):')) if usee =='0': break usee_money = int(input('你要押多少:')) if usee >=3: print('输入有误') elif usee ==1 and s <20 : print('押大了') money -=usee_money print('你的本金还剩%d'%money) elif usee == 2 and s>20: print('押大了') money -= usee_money print('你的本金还剩%d' % money) else: print('恭喜你押对了') money += usee_money print('你的本金还剩%d' % money) print('本次是%s'%s)
-