python基礎之邏輯題(2)
k=1000 while k>1: print(k) k=k/2 結果:10次 ------------------ k=1000 while k>1: print(k) k=k//2 結果:9次
numbers = [1,2,3,4] numbers.append([5,6,7,8]) #添加的是一個整體,想當一個元素,不要理解錯了 print (len(numbers)) 結果: 5
import math print(math.floor(5.5)) ------------------- 結果: python2 :5.0 python3 : 5
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
#列如 輸入字符串'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
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
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
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()
結果:
不讓訪問,你訪問的頻率太快了
不讓訪問,你訪問的頻率太快了
結果: python3: (返回迭代器) <map object at 0x0000020A1DFF7198> python2: (返回列表) ['1', '2', '3', '4', '5']