• python基础之逻辑题(2)


    python基础之逻辑题(2)

      1.若k为整数,下列while循环执行的次数为?

       2.请输出正确结果-----numbers?

       3.求结果-----math?

        4.求结果-----sum?

       5.输入一个字符串,输出该字符串中字符的所有组合?

       6.i和n的值?

       7.生成器编写fib函数?

       8.写一个base62ebcode,62进制?

       9.实现一个装饰器,限制该函数被调用的频率?

      10.求结果------map?

    1.若k为整数,下列while循环执行的次数为

    k=1000
    while k>1:
        print(k)
        k=k/2
    
    结果:10次
    ------------------
    
    k=1000
    while k>1:
        print(k)
        k=k//2
    
    结果:9次

    2.请输出正确结果

    numbers = [1,2,3,4]
    numbers.append([5,6,7,8])  #添加的是一个整体,想当一个元素,不要理解错了
    print (len(numbers))
    
    
    
    结果:
    5

    3.求结果

    import math
    print(math.floor(5.5))
    
    
    -------------------
    结果:
    python2 :5.0
    python3 : 5

    4.求结果

    names1 = ['Amir','Barry','Chaies','Dao']
    names2 = names1
    names3 =  names1[:]
    names2[0]='Alice'
    names3[1]='Bob'
    sum = 0
    for ls in (names1,names2,names3):
        if ls[0]=='Alice':
            sum+=1
        if ls[1]=='Bob':
            sum+=10
    print(sum)
    
    
    ------------------------------------
    names1
    ['Alice', 'Barry', 'Chaies', 'Dao'] 
    names2   此时是赋值,相当于完全复制,所以其内存空间与值与names1是完全相同的
    ['Alice', 'Barry', 'Chaies', 'Dao'] 
    names3   此时是浅拷贝,所以相当于只拷贝到表层,names3[1]='Bob' 时只改变了names3 中的值
    ['Amir', 'Bob', 'Chaies', 'Dao']  
    
    
    结果:
    12

    5.输入一个字符串,输出该字符串中字符的所有组合

    #列如 输入字符串'1,2,3'则输出位1,2,3,12,13,23,123(组合数不考虑顺序 所以12,21是等价的)
    
    imp
    s = "1,2,3"
    #
    lst = s.split(",") # [1, 2, 3]
    
    for i in range(1, 2**len(lst)):
        # print(i)
        bin = format(i, "0"+str(len(lst))+"b")
        # print(bin)
        num = ""
        for j in range(len(bin)):
            if bin[j] == '1':
                num += str(lst[j])
        print(num)
    
    
    结果
    3
    2
    23
    1
    13
    12
    123

    6.执行下面代码后,i和n的值为

    int i=10
    int n=i++%5
    
    
    
    结果
    11,0
    
    i++ 是后加加,在表达式内不自增
    int n= i++%5; // i=10进入,n=0,出了表达式 才自增 i=11;  
    
    int i=11
    int m= ++i%5; // i=11 进入, 前加加,则先增1,i=12, m=2, 出表达式 i 维持12

    7.使用生成器编写fib函数,函数声明为fib(max)输入一个参数max值,使得该函数可以这样调用

    def fib(max):
        yield 1000
    for i  in range(100):
        print(fib(1000))  #生成器
    #并产生如下结果(斐波那契数列)1,1,2,3,5,8,13,21,....
    n=100
    a,b =1,1
    while a<n:
        print(a)
        a,b=b,a+b

    8.写一个base62encode 函数,62进制

    def base62Encode(n):
        s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        lst = []
        while n > 0:
            lst.append(n % 62) # 58
            n = n // 62
    
        lst = lst[::-1]
        result = ""
        for item in lst: # 58
            result += s[item]
    
        return result
    
    
    
    print(base62Encode(58))
    
    结果
    w

    9.请实现一个装饰器,限制该函数被调用的频率,入十秒一次

    import time
    
    def wrapper(fn):
        n = 0
        def inner(*args, **kwargs):
            nonlocal n
            now = time.time()
            if now - n > 10:
                n = now
                ret = fn(*args, **kwargs)
                return ret
            else:
                print("不让访问, 您访问的频率太快了")
    
        return inner
    
    @wrapper
    def target():
        pass
    
    target()
    time.sleep(10)   #   让他睡10秒
    target()
    target()
    target()

    结果:
    不让访问,你访问的频率太快了
    不让访问,你访问的频率太快了

    10.map(str,[1,2,3,4,5])输出结果是

    结果:
    python3: (返回迭代器)
        <map object at 0x0000020A1DFF7198>
    python2: (返回列表)
        ['1', '2', '3', '4', '5']

                                                                                      

  • 相关阅读:
    2015 9月15日 工作计划与执行
    2015 9月14日 工作计划与执行
    2015 9月14日 周计划
    2015 9月11日 工作计划与执行
    2015 9月10日 工作计划与执行
    2015 9月9日 工作计划与执行
    2015 9月8日 工作计划与执行
    js 有用信息集
    2015 9月7日 工作计划与执行
    文件间的编译依存关系 分类: C/C++ 2015-06-10 15:37 34人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/tianshuai1/p/10948591.html
Copyright © 2020-2023  润新知