• Python练习题--持续更新


    1、你是一个高级测试工程师,现在要做性能测试,需要你写一个函数,批量生成一些注册使用的账号。

    产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母、小写字母、数字组成,结果如下图:


     

    2、测试机器的磁盘太小,经常报警,要写一个清理日志的脚本,每次运行就把三天之前的日志删除,日志名的格式是xxx-20170623.log。

    3、公司服务器,经常被别人攻击,要写个监控nginx日志的脚本,每分钟运行一次,如果这一分钟内同一个ip请求次数超过200次,加入黑名单,nginx日志每一行的格式如下:

     

    def agent_log():
        import time
        pin=0
        while True:
            ips = []
            fr = open('access.log')
            fr.seek(pin)
            for line in fr:
                ip = line.split()[0]
                ips.append(ip)
            new_ips = set(ips)
            for new_ip in new_ips:
                if ips.count(new_ip)>200:
                    print('加入黑名单的ip是:%s'%new_ip)
            pin = fr.tell() #记录读完的指针位置
            time.sleep(60)

     

    4、额,来个小插曲,写程序求出1-100的累加和。1+2+3+4+5+.....+100。

    5、不知不觉你已经写了很多python代码了,代码全部都放在e盘下面的my_code文件夹中,突然突发奇想,想统计了一下总共写了多少行代码,包括空行和注释,要把代码的行数、空行数、注释行数都统计出来。

    6、有一个文件,里面有一些敏感词汇,如下,如果输入这些词,就用**代替,然后输出,例如输入今天没吃饭,碰到一个傻逼,原来那个sb是小明。输出今天没吃饭,碰到一个**,原来那个**是小明。

    傻逼
    傻b
    煞笔
    煞比
    sb
    傻B
    shabi

     

    with open('file.txt','a+',encoding='utf-8') as fr:
        with open('file_bak','w') as fw:
            fr.seek(0)
            for line in fr:
                new_line = line.replace('傻逼', '**').
                    replace('sb', '**').replace('煞笔', '**').replace('煞比', '**').replace('傻B', '**')
                fw.write(new_line)
                print(new_line)

     

    #1、读出来所有的敏感词
    #2、循环这些敏感词,判断是不是在用户输入的字符串里面
    #3、如果在的话就替换
    fr = open('keywords.txt',encoding='utf-8')
    talk = input('请输入一句话:').strip()
    for line in fr:
        new_line = line.strip()
        if new_line in talk:
            talk = talk.replace(new_line,'**')
    print('河蟹过之后的是:%s'%talk)

    7、写个简单的爬虫,把这个链接http://tieba.baidu.com/p/2166231880,里面所有的图片保存到本地。

    8、有一个存着学生成绩的文件,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下

    {
    "1":["小花",99,100,98.5],
    "2":["小王",90,30.5,95],
    "3":["小明",67.5,49.6,88]
    }

    写完之后excel格式如下:

    9、列表、元组、集合有什么区别?

    10、下面几段代码中哪个是错误的写法,为什么?

    var = [1,2,3,4]
    var[1]=5
    var1 = 'abc123'
    var1[0]='s'
    var2 = ('a','b','c','d')
    var2[-1]=2
    var3={'a',3,'b','4'}
    var3[2]='c'
    var4={'name':'lily','sex':'nv'}
    print(var4['age'])

     

    11、怎么通过不引入第三方变量的方式,交换两个变量的值?

    a=1
    b=2

    12、下面的代码执行结果是什么,为什么?

    li = [1,1,2,3,4,5,6,7,8,9]
    for i in li:
        if i%2!=0:
            li.remove(i)
    print(li)

    13、下面这段代码的执行结果是什么?

    money = 500
    def test(consume):
     
    return money - consume
     
    def test1(money):
     
    return test(money)+money
     
    money = test1(money)
    print(money)

    14、下面这段代码会打印什么,为什么?

    def test():
    global a
    a = 5
     
    def test1():
    c = a+5
    return c
     
    res = test1()
    print(res)

    15、写一个产生密码的程序,输入次数,输入多少次就产生多少条数据,要求密码必须包含大写字母、小写字母和数字,长度8位,不能重复

    #需求分析
    #1、循环,输入什么就循环多少次
    #2、随机来取值,是从所有的大写字母、小写字母、数字里面来取
    #3、 0123456789  a-z A-Z
    #4、长度8位,就是随机取8个
    #5、不能重复,放到一个list里面,再判断,如果产生的数字不在这个list的话,就是不重复
    #6、写到文件里面就行了
    #来3个字符串
    #012345679 从这个字符串里面取1位 包含数字
    #a-z     再随机从这里取1位    包含小写字母了
    #A-Z      再随机从这里取1位    包含大写字母了
    #0123456789  a-z A-Z  再取5位,再和前面的3位加起来 8位
    import random,string
    
    count = input('请输入你要产生多少条密码:').strip()
    all_passwds = []
    for i in range(int(count)):
        num = random.sample(string.digits,1) #随机取1位数字
        lower = random.sample(string.ascii_lowercase,1) #随机取1位小写字母
        upper = random.sample(string.ascii_uppercase,1) #随机取1位大写字母
        other = random.sample(string.ascii_letters+string.digits,5) #随机取5位
        print(other)
        res = num+lower+upper+other #产生的8位密码
        print(res)
        res = ''.join(res)
        if res not in all_passwds: #判断是否重复
            all_passwds.append(res+'
    ')
    with open('passwds.txt','a+') as fw:
        fw.seek(0)
        fw.writelines(all_passwds)

    16、写一个注册程序,用字典保存
        字典格式如下:
         {
            "niuhanyang":{"passwd":"123456","role":1"},
             "jmy":{"passwd":"123456","role":2"},
             "xiaohei":{"passwd":123456,"role":1}

          }
     role如果是1的话,代表管理员,如果是2代表普通用户,注册的用户都是普通用户

    #需求分析:
    #1、先要从原来的数据库(咱们的user_info文件)里面,把已经存在的数据读出来
    #2、让用户输入账号、密码、密码确认
    #3、判断用户是否存在,如果不存在的话,才可以注册
    #4、判断密码和确认密码输入一致的话,注册成功
    #5、把新的用户写到这个userinfo字典中
    #6、把新的userinfo替换旧的
    #7、保存文件
    fr = open('user_info.txt','a+')
    fr.seek(0)
    user_info = eval(fr.read()) #存的是从文件里面读出来的用户信息
    user_num = len(user_info) #存的最开始的字典长度
    for i in range(3):
        username = input('plz enter your username:').strip()
        password = input('plz enter your password:').strip()
        c_password = input('plz enter your password agen:').strip()
        if len(username)==0:
            print('用户名不能为空')
        elif username not in user_info:
            if password == c_password and len(password)>0:
                user_info[username]={'passwd':password,'role':'2'}
                print('注册成功!')
                break
            else:
                print('密码不能为空!两次输入密码必须一致!')
        else:
            print('你注册的用户已经存在!')
    if user_num == len(user_info):
        pass
    else:
        fr.seek(0)
        fr.truncate()#清空文件
        fr.write(str(user_info))
        fr.flush()#缓冲区的
    fr.close()

    17、注册和登录连上,能用你之前注册的用户来登录

    #需求分析:
    #1、读原来的用户
    #2、判断就行了
    #3、说白了就是字典取值
    
    fr = open('user_info.txt')
    user_info = eval(fr.read())#存的所有用户
    for i in range(3):
        username = input('plz enter your username:').strip()
        password = input('plz enter your password:').strip()
        if len(username)<1 and len(password)<1:
            print('用户名/密码不能为空!')
        elif username in user_info:#存在
            if user_info[username]['passwd'] == password:
                print('欢迎光临【%s】'%username)
                break
            else:
                print('密码错误!')
        else:
            print('用户不存在!')

     18、   

    先让你登录
        {
        "nhy":{"passwd":123,'role':1,'moeny':10000,"carts":['mac']},
        "nhy2":{"passwd":123,'role':2,'moeny':10000,"carts":[]}
        }
        #role是1的话,代表管理员,2代表普通用户
        #普通用户:
            #1、查看所有的商品
            #2、输入商品名称购买商品,购买完了之后要加到自己的购物车里面,钱要减去
            #3、可以查看自己购物车和余额,你已经买了xx东西,你还xxx钱
            #4、退出
        #管理员,1、添加商品,商品名称,商品价格
                 2、充值,输入用户名,给他加钱
                 3、退出

     

  • 相关阅读:
    js中for循环点击事件(闭包)
    浏览器缩放,会导致布局打乱,解决方法?/一缩小网页布局就打乱了怎么办?
    新手如何理解JS面向对象开发?
    PHP超全局变量$_SERVER
    个人网站(sysoft.net.cn)被k,公司名都搜索不出来了,怎么办?
    松软带你学开发-SQLSELECTDISTINCT语句
    Tomcat内存监控及调优
    JAVA概述 也许你会豁然开朗
    Java programming problems
    Summary of Java basics review data
  • 原文地址:https://www.cnblogs.com/feng0815/p/7603997.html
Copyright © 2020-2023  润新知