首頁>技術>

1、 執行 Python 指令碼的兩種方式

1)/usr/bin/python3 xx.py 2)python3 xx.py #注xx.py需要在內容裡面呼叫由什麼直譯器執行

2、 簡述位、位元組的關係

1Byte = 8bit1bit 表示某個二進位制 0 1

3、 簡述 ascii、unicode、utf-8、gbk 的關係

最初計算機是由美國發明的,計算機需要一套相應的字元編碼集ascii,來表示英文字元後來中國也表示也用來計算機,也需要一套字元編碼集來表示漢字字元,也就是gbk由於各國需要用計算機都需要一套相應的字元編碼,來表示自已國家的字元,於是就出現統一的字元編碼的集也就是unicode,所有的字元都表示兩個位元組,原來英文字元只佔用一個位元組,存放英文字元文件,會浪費一倍的空間,美國肯定不會同意於是就出現了utf-8編碼,可變長的字元編碼,英文字元編碼表示1個位元組,漢字表示3個位元組這下美國就開興了哈!

4、 請寫出 “你好” 分別用 utf-8 和 gbk 編碼所佔的位數

你好  在utf-8中一箇中文字元3個位元組(Byte)  1位元組 = 8位(bit) 你好就在utf-8表示24位你好  在gbk中一箇中文字元用2個位元組(Byte)  1位元組 = 8位(bit) 你好就在gbk中表示16位

5、 Pyhton 單行註釋和多行註釋分別用什麼?

單行註釋:用 #註釋內容多行註釋:用'''註釋內容'''    或者   """註釋內容"""

6、 宣告變數注意事項有那些

1 變數名不能以數字開頭 2 變數名只能是數字,下劃線,英文字母的組合 3 變數名不能有特殊符號 4 某些特定的字元不能用做變數名

7、 如何檢視變數在記憶體中的地址?

id(變數名)

8、 執行 Python 程式時,自動生成的 .pyc檔案的作用是什麼?

當執行xx.py的python會 把編譯的結果會儲存在位於記憶體中的Pycodeobject中,python程式執行結束,python直譯器則將PyCodeObject寫回到pyc檔案中。

當python再次執行xx.py時,首先程式會在硬碟中尋找pyc檔案,直接載入,否則就重複上面的過程.pyc檔案在_pycache_

注:自已理解,我也不是很瞭解

9、寫程式碼

a.實現使用者輸入使用者名稱和密碼,當用戶名為seven且密碼為123時,顯示登陸成功,否則登陸失敗!

程式碼如下:

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''user  =  "seven"passwd = 123username = input("please the enter user:")password = int(input("please the enter passwd:"))if username == user and password == passwd:    print("logon successfull")else:    print("logon failed")

注意:input()輸入的任何內容都是字串

b.實現使用者輸入使用者名稱和密碼,當用戶名為 seven且密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重複輸入三次

程式碼如下

user  =  "seven"passwd =  123for i in range(3):    username = input("please the enter user:")    password = input("please the enter passwd:")    if password.isdigit():        password = int(password)        if username == user and passwd == password:            print("logon successfull")            break        else:            print("logon failed")    else:        print("logon failed")

c.實現使用者輸入使用者名稱和密碼,當用戶名為 seven 或 alex 且密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重複輸入三次

程式碼如下:

user  =  ["seven","alex"]passwd =  123for i in range(3):    username = input("please the enter user:")    password = input("please the enter passwd:")    if password.isdigit():        password = int(password)        if (username in user)  and passwd == password:            print("logon successfull")            break        else:            print("logon failed")    else:        print("logon failed")

10、寫程式碼

a.使用 while 迴圈實現輸出 2-3+4­-5+6 ...+100的和

程式碼如下:

even = 0count = 1while count<100:    count+=1    #方法1:得出偶數-奇數+偶數-奇數...    #方法2:求出所有的偶數減去所有的奇數和 (跟小學的換位運算類似)    if count % 2 == 0:        print("2-100的偶數",count)        even += count     else:        print("2-100的奇數",count)        even -= count print(even) #得出的結果

b.使用 for 迴圈和 range 實現輸出1-2+3-4+5-6....-98+99的和

程式碼如下:

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:778463939尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''uneven = 0  for i in range(1,100):    #方法1:得出的奇數-偶數+奇數-偶數....    #方法2:求出奇數和,求出偶數和,用奇數和減偶數和    if i % 2 == 1:        print("1-99的奇數",i)        uneven += i    else:        print("1-99的偶數",i)        uneven -= iprint(uneven)   #得出結果

c.使用 while 迴圈實現輸出1,2,3,4,5,7,8,9,11,12

程式碼如下:

count = 0while count <12:    count += 1    if count == 6:        continue    elif count ==10:        continue    print(count)

d.使用 while 迴圈實現輸出 1-100 內的所有奇數

程式碼如下:

count = 0while count < 100:    count += 1    if count % 2 == 1:        print("1-100的奇數",count)

e. 使用 while 迴圈實現輸出1-100內的所有偶數

程式碼如下:

count = 0while count < 100:    count += 1    if count % 2 == 0:        print("1-100的偶數",count)

11、分別書寫數字5,10,32,7的二進位制表示

在python直譯器中執行bin(number),把某個數字轉換成二進位制 二進位制的表示:0b (binary)

bin(5)    #0b101bin(10)  #0b1010bin(32)  #0b100000bin(7)    #0b111

12、簡述物件和 類的關係(可用比喻的手法)

類:用來描述具有相同屬性和方法的物件集合,它定義每個物件的屬性所共有的屬性和方法,物件是類的例項

物件:透過類定義的資料結構例項

假如:人是一個種類,我們自已本身就是類的物件 類是一張圖紙(該圖紙上畫了建築的模型,以及怎樣實現),實際高樓大夏就是圖紙 實現的物件,類是抽象的,物件是實際存在的。

13、現有如下兩個變數,請簡述 n1 和 n2是什麼關係?

n1=123n2=123

n1和n2關係是一樣 ,我們可以用id(n1),id(n2)在記憶體中的地址的表示

14、現有如下兩個變數,請簡述 n1 和 n2是什麼關係?

n1 = 123456n2 = 123456

n1和n2雖然在值是一樣的,在記憶體地址表示中是不一樣的

注: (在python內部中,記憶體還有一個(小數字池,字串池)快取池,對於經常用的,在python內部編譯有一個最佳化,在這個快取池,如果重複使用,都是使用同一記憶體快取池的記憶體(地址)空間

如果大於這個快取池,則會在記憶體獨立開闢新的一個記憶體(地址)空間

例如 數字的快取池 -5 至 256 可以用不相同的變數名,相同的值,用id(變數名),看它們的記憶體地址)

15、現有如下兩個變數,請簡述 n1 和 n2 是什麼關係?

n1 = 123456n2 = n1

n2 是 n1 值的引用 它們在記憶體的地址是一樣和內容也是一樣的,只是不同命名變數的賦值: 賦值不會開闢新的記憶體空間,它只是複製了新物件的引用,如果n1的值發生改變,n2還是原來的改變之前值

16、如有一下變數 n1 =5,請使用 int 的提供的方法,得到該變數最少可以用多少個二進位制位表示?

n1= 5print(n1.bit_length())#結果3

17、布林值分別有什麼?

True  False

18、閱讀程式碼,請寫出執行結果

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''a = "alex"b = a.capitalize()print(a)print(b)請寫出輸出結果:alex    #aAlex    #b

19、寫程式碼,有如下變數,請按照要求實現每個功能

name = " aleX"

a. 移除 name 變數對應的值兩邊的空格,並輸入移除有的內容

print(name.strip())#結果aleX

b.判斷 name 變數對應的值是否以 “al” 開頭,並輸出結果

print(name.startswith("al"))#結果False

c.判斷 name 變數對應的值是否以 “X” 結尾,並輸出結果

print(name.endswith("X"))#結果True

d.將 name 變數對應的值中的 “ l” 替換為 “ p”,並輸出結果

print(name.replace("l","p"))#結果    apeX

e.將 name 變數對應的值根據 “ l” 分割,並輸出結果。

print(name.split("l"))#結果['\ta', 'eX']  #\t 表示使用了tab

f.請問,上一題 e分割之後得到值是什麼型別?

print(type(name.split("l")))#結果<class 'list'> #列表

g.將 name 變數對應的值變大寫,並輸出結果

print(name.upper())    ALEX

h.將 name 變數對應的值變小寫,並輸出結果

print(name.lower())#結果    alex

i.請輸出 name 變數對應的值的第 2 個字元?

print(name[2])#結果l

j. 請輸出 name 變數對應的值的前 3 個字元?

print(name[:3])#結果    al

k. 請輸出 name 變數對應的值的後 2 個字元?

print(name[-2:])#結果eX

l.請輸出 name 變數對應的值中 “ e” 所在索引位置?

print(name.index('e'))#結果3

20、字串是否可迭代?如可以請使用 for 迴圈每一個元素?

字串可以迭代 程式碼如下:

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''hobby = "一條龍"for i in hobby:    print(i)顯示結果如下:一條龍

21、請用程式碼實現:利用下劃線將列表的每一個元素拼接成字串,li = ['alex', 'eric', 'rain']

print("_".join(li))#結果alex_eric_rain

22、寫程式碼,有如下列表,按照要求實現每一個功能

li = ['alex','eric','rain']

a.計算列表長度並輸出

print(len(li))#結果3

b.列表中追加元素 “seven”,並輸出新增後的列表

li.append("seven")print(li)#結果['alex', 'eric', 'rain', 'seven']

c.請在列表的第1個位置插入元素 “Tony”,並輸出新增後的列表

li.insert(0,"Tony")print(li)#結果['Tony', 'alex', 'eric', 'rain']

d.請修改列表第2個位置的元素為 “Kelly”,並輸出修改後的列表

del li[1];print(li)   #結果['alex', 'rain']   li.pop(1);print(li)   #結果['alex', 'rain']
li.remove("eric")print(li)#結果['alex', 'rain']

f.請刪除列表中的第2個元素,並輸出刪除的元素的值和刪除元素後的列表

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''print(li.pop(1));print(li)#結果eric['alex', 'rain']

g.請刪除列表中的第3個元素,並輸出刪除元素後的列表

del li[1:3]print(li)#結果['alex']

i.請將列表所有的元素反轉,並輸出反轉後的列表

li.reverse()print(li)#結果['rain', 'eric', 'alex']

j.請使用 for、len、range 輸出列表的索引

#3種方法,建議用第三種

1)for

for i in li:    #list.index()列表有相同元素的,只是的獲取(相同元素中的第一個元素)的索引    print(li.index(i),i)  #如果列表內有相同的元素,不建議使用此方法#結果0 alex1 eric2 rain

2)len

zero = []for i in li:    print(len(zero),i)    zero.append(i)#結果0 alex1 eric2 rain

3)range

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''for i in range(len(li)):    print(i,li[i])#結果0 alex1 eric2 rain

k.請使用 enumrate 輸出列表元素和序號(序號從 100 開始)

for index,i in enumerate(li,start=100):    print(index,i)#結果100 alex101 eric102 rain

l.請使用 for 迴圈輸出列表的所有元素

for i in li:    print(i)#結果alexericrain

23、寫程式碼,有如下列表,請按照功能要求實現每一個功能

li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]

a. 請輸出 “Kelly”

print(li[2][1][1])#結果kelly

b.請使用索引找到 'all’元素並將其修改為 “ALL”

li[2][2] = "ALL"print(li)#結果['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]

24、寫程式碼,有如下元組,按照要求實現每一個功能

tu=('alex','eric','rain')

a.計算元組長度並輸出

print(len(tu))#結果3

b.獲取元組的第2個元素,並輸出

print(tu[1])#結果eric

c.獲取元組的第 1-2個元素,並輸出

print(tu[0:2])#結果('alex', 'eric')

d.請使用 for 輸出元組的元素

for i in tu:    print(i)#結果alexericrain

e.請使用 for、len、range 輸出元組的索引

#跟22題j列表用法類似for i in range(len(tu)):    print(i,tu[i])#結果0 alex1 eric2 rain

f.請使用 enumrate 輸出元祖元素和序號(序號從 10 開始)

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''for index,i in enumerate(tu,start=10):    print(index,i)#結果10 alex11 eric12 rain

25、有如下變數,請實現要求的功能

tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])

a.講述元祖的特性

元祖和列表類似都是有序的從0開始 不同的是元祖的元素是不能修改的

b.請問 tu 變數中的第一個元素 “alex” 是否可被修改?

不能修改

c.請問tu變數中的"k2"對應的值是什麼型別?是否可以被修改? 如果可以,請在其中新增一個元素 “Seven”

print(type(tu[1][2]["k2"]))#結果<class 'list'>

列表型別可以修改

tu[1][2]["k2"].append("seven")print(tu)#結果('alex', [11, 22, {'k2': ['age', 'name', 'seven'], 'k3': (11, 22, 33), 'k1': 'v1'}, 44])

注:表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。 tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。但指向的這個list本身是可變的!

d.請問 tu 變數中的"k3"對應的值是什麼型別?是否可以被修改? 如果可以,請在其中新增一個元素 “Seven”

print(type(tu[1][2]["k3"]))#結果<class 'tuple'>#對應值是元祖,不能修改

26、字典

dic ={'k1':"v1","k2":"v2","k3":[11,22,33]}

a.請迴圈輸出所有的 key

for i in dic:    print(i)#結果k1k3k2

注:字典是無序的

b.請迴圈輸出所有的value

for i in dic:    print(dic[i])#結果[11, 22, 33]v2v1

c.請迴圈輸出所有的 key 和 value

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''for i in dic:    print(i,dic[i])#結果k2 v2k3 [11, 22, 33]k1 v1

d.請在字典中新增一個鍵值對,“k4”:“v4”,輸出新增後的字典

dic["k4"] = "v4"print(dic)#結果{'k4': 'v4', 'k2': 'v2', 'k3': [11, 22, 33], 'k1': 'v1'}

e.請在修改字典中 “k1” 對應的值為 “alex”,輸出修改後的字典

dic['k1'] = "alex"print(dic)#結果{'k3': [11, 22, 33], 'k1': 'alex', 'k2': 'v2'}

f.請在 k3 對應的值中追加一個元素44,輸出修改後的字典

dic["k3"].append(44)print(dic)#結果{'k2': 'v2', 'k3': [11, 22, 33, 44], 'k1': 'v1'}

g.請在 k3 對應的值的第1個位置插入個元素18,輸出修改後的字典

dic["k3"].insert(0,18)print(dic)#結果{'k1': 'v1', 'k2': 'v2', 'k3': [18, 11, 22, 33]}

27、轉換

a.將字串 s=“alex” 轉換成列表

print(list(s))#結果['a', 'l', 'e', 'x']

b.將字串 s=“alex” 轉換成元祖

print(tuple(s))#結果('a', 'l', 'e', 'x')

c.將列表 li =["alex","seven"]轉換成元組

print(tuple(li))#結果('alex', 'seven')

d.將元祖 tu =('Alex',"seven")轉換成列表

print(list(tu))#結果['Alex', 'seven']

e.將列表 li=["alex","seven"]轉換成字典且字典的key按照10開始向後遞增

'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''dic1 = {}for key,value in enumerate(li,start=10):    dic1[key] = valueprint(dic1)#結果{10: 'alex', 11: 'seven'}

28、轉碼

n="老男孩"

a.將字串轉換成 utf-8 編碼的位元組,並輸出,然後將該位元組再轉換成 utf-8 編碼字串,再輸出

print(n.encode("utf-8"))#結果b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9'print(n.encode("utf-8").decode("utf-8"))#結果老男孩

b.將字串轉換成 gbk 編碼的位元組,並輸出,然後將該位元組再轉換成 gbk 編碼字串,再輸出

print(n.encode("gbk"))#結果b'\xc0\xcf\xc4\xd0\xba\xa2'print(n.encode("gbk").decode("gbk"))#結果老男孩

29、求1-100內的所有數的和

#3種方法 1)

print(sum(range(1,101)))#結果5050
SUM = 0for i in range(1,101):    SUM += iprint(SUM)#結果5050
'''遇到問題沒人解答?小編建立了一個Python學習交流QQ群:916788619尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的影片學習教程和PDF電子書!'''SUM = 0count = 1while count <= 100:    SUM += count    count += 1print(SUM)#結果5050

30、元素分類

有如下值集合[11,22,33,44,55,66,77,88,99,90],將所有大於66的值儲存至字典的第一個 key中,將小於66的值儲存至第二個 key 的值中。

即:{‘k1’:大於 66 的所有值,‘k2’:小於66 的所有值}

dic = {"k1":[],       "k2":[]}aa = set([11,22,33,44,55,66,77,88,99,90])for i in aa:    if i>= 66:        dic["k1"].append(i)    else:        dic["k2"].append(i)print(dic)結果{'k1': [66, 99, 77, 88, 90], 'k2': [33, 11, 44, 22, 55]}

31、購物車 功能要求: 要求使用者輸入總資產,例如: 2000 顯示商品列表,讓使用者根據序號選擇商品,加入購物車 購買,如果商品總額大於總資產,提示賬戶餘額不足,否則,購買成功。

goods = [{"name":"電腦","price":1999},{"name":"滑鼠","price":10},{"name":"遊艇","price":20},{"name":"美女","price":98},]shop_cart = []goods    =    [{"name":"電腦","price":1999},{"name":"滑鼠","price":10},{"name":"遊艇","price":20},{"name":"美女","price":98},]while True:    salary = input("請輸入使用者餘額[quit]:")    if salary.isdigit():        salary = int(salary)        break    elif salary == "quit":        exit("不想購買")    else:        print("please the enter number")while True:    print("shop list".center(50, '*'))    for index,i in enumerate(goods):        print(index,i)    choose_number = input("請輸入購買商品編號[quit]:")    if choose_number.isdigit():        choose_number = int(choose_number)        product_list = []        if 0 <= choose_number <= len(goods):            product_list.append(goods[choose_number])            if salary >= product_list[0]["price"]:              shop_cart.append(goods[choose_number])              salary -= product_list[0]['price']              print("當前購買的商品",product_list,"當前使用者餘額\033[1;31m{salary}\033[0m".format(salary=salary))            else:                print("餘額不足")        else:            print("無效的商品編號")    elif choose_number.lower() == 'quit':        print("購買的商品".center(50,"*"))        for y in shop_cart:            print(y)        exit()    else:        print("無效的輸入")#注:簡易的購物車,還能繼續最佳化

4
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 效能最佳化之topdown模型:精確定位程式執行時的cpu消耗