zoukankan      html  css  js  c++  java
  • 练习题。。。。。。。。

      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()
  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/haiyan123/p/7284396.html
Copyright © 2011-2022 走看看