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']

                                                                                  

posted @ 2019-05-30 11:28  帅小伙⊙∪⊙  阅读(2201)  评论(0编辑  收藏  举报