zoukankan      html  css  js  c++  java
  • python(36)- 测试题

    1、8<<2等于?

    32

    “<<”位运算
    
              264   132  64  32  16  8  4  2  1
    
    原始位置    0     0   0   0   0   1  0  0  0
    
    想左位移2位   0    0   0   1   0   0  0  0  0
    

       

    2、通过内置函数计算5除以2的余数

    a=divmod(5,2)
    print(a)
    --->(2,1)  #2为商,1有余数
    
    print(a[1])
    --->1
    

    3、s=[1,"h",2,"e",[1,2,3],"l",(4,5),"l",{1:"111"},"o"],将s中的5个字符提取出来并拼接成字符串。

    s = [1, "h", 2, "e", [1, 2, 3], "l", (4, 5), "l", {1: "111"}, "o"]
    str_s=""
    for i in s:
        if type(i)==str:
            str_s+="".join(i)
    print(str_s)
    --->hello
    
    
    str_s="".join([i for i in s if type(i)==str])
    print(str_s)
    --->hello
    

    4、判断"yuan"是否在[123,(1,"yuan"),{"yuan":"handsome"},"yuanhao"],如何判断以及对应结果?

    s=[123, (1, "yuan"), {"yuan": "handsome"}, "yuanhao"]
    if "yuan" in s:
        print('"yuan"在列表s中')
    else:
        print('"yuan"不在列表s中')
    
    --->"yuan"不在列表s中
    

    5、l=[1,2,3]
       l2=l.insert(3,"hello")
       print(l2)
       执行结果并解释为什么? 

    l=[1,2,3]
    l2=l.insert(3,"hello")
    print(l)
    --->[1, 2, 3, 'hello']
    
    print(l2)
    --->None        #因为l.insert(3,'hello')的执行结果是没有返回值的,所以打印l2什么也得不到
    

    6、 a=[1,2,[3,"hello"],{"egon":"aigan"}]
      b=a[:]

      a[0]=5
      a[2][0]=666

      print(a)
      print(b)
      计算结果以及为什么?

    [5, 2, [666, 'hello'], {'egon': 'aigan'}]
    [1, 2, [666, 'hello'], {'egon': 'aigan'}]
    b相当于a的浅拷贝,当拷贝a中[3,"hello"]相当于只拷贝了一个内存地址,当劣列表里的元素改变时,
    b指向的内存地址并未发生改变,所以列表元素跟着一起改变
    

    7 使用文件读取,找出文件中最长的行的长度(用一行代码解决)? 

    print(max([line for line in open("a.txt","r",encoding="utf8")]))
    

    8.

    def add(s, x):
      return s + x

    def generator():
      for i in range(4):
        yield i

    base = generator()
    for n in [1, 11]:
      base = (add(i, n) for i in base)

    print list(base)

    --->[22, 23, 24, 25]
    
    base=[0,1,2,3]
    base1=(add(i, n) for i in [0,1,2,3])  
    --->[11,12,13,14]
    
    
    base2=(add(i, n) for i in [11,12,13,14])    
    --->[22,23,24,25]
    

    9

    hello.py(gbk方式保存):
    #coding:GBK
    print(“老男孩”)

    如果用py2,py3下在cmd下运行回报错吗?为什么并提出解决方案? (编码)

    均不会报错,因为cmd默认编码方式为GBK,所以在python2和python3中都不会报错
    

    但在python2解释器中会报错,需要gbk模式解码。python3解释器中不会报错
    

    10 通过函数化编程实现5的阶乘

    def func(n):
        if n == 1:
            return 1
        else:
            return n * func(n-1)
     
    obj = func(3)
    print(obj)
    

    11 打印如下图案:

                *
               ***
              *****
             *******
              *****
               ***
                *
     
     
    def func(number):
        for i in range(1,number,2):
            print(("*" * i).center(number))
        for i in range(number,0,-2):
            print(("*" * i).center(number))
     
    func(7)
    

      

    12 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222,几个数相加以及a的值由键盘控制。

    def func(a,n):
        sum=0
        a=str(a)
        for i in range(1,n+1):
            x=int(a*i)
            sum+=x
        return sum
    
    print(func(2,2))
    

    13

    def foo():
      print('hello foo')
      return()


    def bar():
      print('hello bar')


    (1)为这些基础函数加一个装饰器,执行对应函数内容后,将当前时间写入一个文件做一个日志记录。

    def timer(func):
        def wrapper():
            import time
            res = func()
            f = open('log', 'a+')   #以追加的方式打开文件,没有则会创建
            s = time.asctime()      #获取当前时间:Tue Apr 18 21:46:18 2017
            f.write(s + '
    ')       #将当前时间写入log文件,并换行
            f.close()               #关闭log文件
            return res
        return wrapper
    
    @timer
    def foo():
        print('hello foo')
        return ()
    @timer
    def bar():
        print('hello bar')
    
    foo()
    
    bar()
    

      


    (2)改成参数装饰器,即可以根据调用时传的参数决定是否记录时间,比如@logger(True)

    def logger(choice):
        def timmer(func):
            def wrapper():
                import time
                if choice == True:
                    res = func()
                    f = open('log', 'a+')   #以追加的方式打开文件,没有则会创建
                    s = time.asctime()      #获取当前时间:Tue Apr 18 21:46:18 2017
                    f.write(s + '
    ')       #将当前时间写入log文件,并换行
                    f.close()               #关闭log文件
                    return res
                else:
                    pass
            return wrapper
        return timmer
    
    @logger(True)
    def foo():
        print('hello foo')
        return ()
    @logger(True)
    def bar():
        print('hello bar')
    
    foo()
    
    bar()
    

    18 三次登陆锁定:要求一个用户名密码输入密码错误次数超过三次锁定?

    #读取注册用户的信息,用户名,密码,输错次数,写入字典中
    user={}
    with open("DB1",encoding="utf8") as f:
        for line in f:
            username_list=line.strip().split("|")      #username_list--->['egon', '123', '2']
            user[username_list[0]]={"name":username_list[0],
                     "pwd":username_list[1],
                     "times":username_list[2]}
    # print(user)  #-->{'egon': {'name': 'egon', 'pwd': '123', 'times': '2'}, 'xuyaping': {'name': 'xuyaping', 'pwd': '123', 'times': '0'}, 'xyy': {'name': 'xyy', 'pwd': '123', 'times': '1'}}
    
    #读取黑名单用户,将黑名单用户加入列表中
    with open("black_lockname",encoding="utf8") as f1:
        black_list=[]
        for line in f1:
            black_list.append(line.strip())
    # print(black_list)
    
    
    while True:
        username = input("please input your username:").strip()
        passwd = input("please input your passwd:").strip()
        #用户在黑名单中
        if username in black_list:
            print("该用户为黑名单用户,请滚")
            break
    
        # 用户为注册用户
        elif username in user:
            user[username]["times"]=int(user[username]["times"])
            if user[username]["times"]<3 and passwd==user[username]["pwd"]:
                print("登录成功")
                user[username]["times"]=0
                #将修改后的信息重新写入DB1中
                with open("DB1","w",encoding="utf8") as f3:
                    for i in user:
                        f3.write(i + "|" + user[i]["pwd"] + "|" + str(user[i]["times"]) + "
    ")
                break
    
            else:
                user[username]["times"]+=1
                print("登录错误")
                # 将修改后的信息重新写入DB1中
                with open("DB1", "w", encoding="utf8") as f3:
                    for i in user:
                        f3.write(i + "|" + user[i]["pwd"] + "|" + str(user[i]["times"]) + "
    ")
                if user[username]["times"]==3:
                    black_list.append(username)
                    print("账户被锁定")
                    # 将修改后的信息重新写入black_lockname中
                    with open("black_lockname","w",encoding="utf8") as f4:
                        for j in black_list:
                            f4.write(j+ "
    ")
                    break
    
        #用户不是注册用户
        else:
            print("该用户没有注册")
            break
    

    参考博客:http://www.cnblogs.com/xuyaping/p/6679305.html 

  • 相关阅读:
    浅谈ASP.NET核心对象
    SQL MID() 函数
    如何查看linux系统CPU利用率 简单
    canvas 学习笔记 简单
    linux 为用户设定、修改密码 passwd 简单
    转crontab用法(例子) 简单
    mongodb加入系统服务 简单
    转导出csv文件时,处理分隔符问题 简单
    tar和gzip、unzip命令详解 简单
    linux创建用户命令 简单
  • 原文地址:https://www.cnblogs.com/xuyaping/p/6729801.html
Copyright © 2011-2022 走看看