• 部分经典练习题


    复制代码
      1 一、二分查找法算法
      2 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
      3 def find(l,aim,start=0,end=len(l)-1):
      4     mid = (start+end)//2
      5     if not l[start:end+1]:
      6         return '找不到'
      7     elif aim>l[mid]:
      8         return find(l,aim,mid+1,end)
      9     elif aim<l[mid]:
     10         return find(l,aim, start ,mid-1)
     11     else:
     12         return mid
     13 print(find(l,90))
     14 
     15 二、集合
     16 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,
     17 去重,得到新列表,且新列表无需保持列表原来的顺序
     18 l=['a','b',1,'a','a']
     19 print(set(l))
     20 
     21 保持原来的列表
     22 l=['a','b',1,'a','a']
     23 li=[]
     24 s=set()
     25 for i in l:
     26     if i not in s:
     27         s.add(i)
     28         li.append(i)
     29 print(li)
     30 
     31 三、去除文件中重复的行,肯定要保持文件内容的顺序不变
     32 import os
     33 with open('aaa','r',encoding='utf-8') as read_f ,
     34     open('ter','w',encoding='utf-8') as write_f:
     35     s= set()
     36     print(type(s))
     37     for line in  read_f:
     38         if line not  in s:
     39             s.add(line)
     40             write_f.write(line)
     41 os.remove('aaa')
     42 os.rename('ter','aaa')
     43 
     44 
     45 四、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,
     46     并返回结果,如{‘num’:3,’str’:2,’space’:3,’others’:3}(5分)
     47 
     48 def geshu(s):
     49     shuzi=0
     50     zimu =0
     51     kongge = 0
     52     default = 0
     53     for i in s:
     54         if i.isdigit():
     55             shuzi+=1
     56         if i.isspace():
     57             kongge+=1
     58         if i.isalpha():
     59             zimu+=1
     60         else:
     61             default+=1
     62     print({'shuzi':shuzi,'zimu':zimu,'kongge':kongge,'default':default,})
     63 geshu('sasd dfdg')
     64 geshu('2454213')
     65 geshu('abc123')
     66 
     67 六、要求一:使用列表解析,从文件a.txt中取出每一行,做成下述格式(2分)
     68 [{‘name’:'apple','price':10,'count':3},{...},{...},...]
     69 
     70 with open('aaa','r',encoding='utf-8') as f:
     71     for line in f:
     72         l=line.split()
     73         line=[{'name':l[0],'price':l[1],'count':l[2]}]
     74         print(line)
     75         
     76         
     77 七、处理文件,用户指定要查找的文件和内容
     78 将文件中包含要查找内容的每一行都输出到屏幕
     79 def www(filename,content):
     80         f= open(filename)
     81         for line in f:
     82             if content in line:
     83                 yield line
     84 g=www('jiantingfile','aaa')
     85 for line in g:
     86     print(line,end='')
     87     
     88     
     89 八、既可以拷贝文本又可以拷贝视频,图片等文件
     90 f= open('三级菜单.png','rb')
     91 data = f.read()
     92 f = open('2.png','wb')
     93 f.write(data)
     94 print(data)
     95 
     96 
     97 九、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
     98 def length(s):
     99     if len(s)>5:
    100         return True
    101     else:
    102         return False
    103 print(length('asdsfsdf'))
    104 print(length([1,2,3,4,5,6]))
    105 print(length((1,5,'a')))
    106 
    107 
    108 十、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
    109 def func(l):
    110     return l[1::2]
    111 print(func([1,2,3,5,4,8,6,2,1]))
    112 
    113 
    114 十一、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
    115 def func(s):
    116     if s:#如果不为空
    117         if type(s) is str:
    118             for i in s:
    119                 if i=='':
    120                     return True
    121         else:
    122             for i in s:
    123                 if not i:
    124                     return True
    125     else:
    126         return True
    127 print(func([]))
    128 print(func(''))
    129 
    130 
    131 十二、利用递归调用,取出[1,[2,3,[4,5,[6,7,[8,[9,10,[11,[12,[13,14,15]]]]]]]]中所有的
    132 值(10分)
    133 l=[1,[2,3,[4,5,[6,7,[8,[9,10,[11,[12,[13,14,15]]]]]]]]]
    134 def func(l):
    135     for i in l:
    136         if type(i)==list:
    137             func(i)
    138 
    139         else:
    140             print(i)
    141 func(l)
    142 
    143 
    144 十三、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
    145 要求登录成功一次,后续的函数都无需再输入用户名和密码(10分)
    146 注意:从文件中读出字符串形式的字典,可以用json或pickle
    147 定义一个字典看用户登录状态
    148 auth_status={
    149     'user':None,
    150     'status':False#状态是没有登录
    151 }
    152 def wrapper(fun):
    153     def inner(*args,**kwargs):
    154         if auth_status['status']:#如果登录了,就执行fun函数
    155             ret = fun(*args, **kwargs)  # index/home
    156             return ret
    157         else:#如果没有登录,就实现认证功能
    158             username = input('name:>>').strip()#获取用户名
    159             password = input('password:>>').strip()#获取密码
    160             f=open('login.txt','r',encoding='utf-8')#打开文件获取用户的信息
    161             user_dic=f.read()#读出来的是字符串类型
    162             zhddict=eval(user_dic)#转换成字典类型
    163             #print(type(zhddict))#查看eval转换后的类型
    164             if zhddict.get(username) and password == zhddict[username]:#如果用户名和密码都正确,就显示登陆成功,不正确就显示登录失败
    165                 print('login successful')
    166                 auth_status['user']=username #登陆成功后就把用户名放在user里
    167                 auth_status['status']=True  #  状态改为True
    168                 ret = fun(*args,**kwargs)#index/home
    169                 return ret
    170             else:
    171                 print('login faild')
    172     return inner
    173 @wrapper #语法糖
    174 def index():
    175     print("欢迎来到首页")
    176 
    177 @wrapper
    178 def home():
    179     print("欢迎回家")
    180 
    181 index()
    182 index()
    183 home()
    184 index()
    复制代码
  • 相关阅读:
    安装和配置SQL
    自定义中间件封装为模块
    留言板
    Spring Factories机制
    JVM参数配置
    全链路监控的方案概述与比较
    Lombok注解-@SneakyThrows
    @FeignClient注解 中属性 contextId使用
    @validate或@valid注解进行数据校验的解决方案
    maven的settings.xml标签详解
  • 原文地址:https://www.cnblogs.com/maaosheng/p/11619050.html
Copyright © 2020-2023  润新知