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

                                                                                  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM