Python之基礎練習題


1、執行Python腳本的兩種方式

復制代碼
# python3 hello.py Hello World! 你好 # cat hello.py |python Hello World! 你好
復制代碼

2、簡述位、字節的關系

位:計算機的計算單位,代表0或者1
字節:一字節相當於8位

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

4、請寫出"李傑"分別用utf-8和gbk編碼所占的位數

>>> len(bytes(name,encoding='utf-8')) 6 >>> len(bytes(name,encoding='gbk')) 4

5、Python單行注釋和多行注釋分別用什么?

單行注釋: # 被注釋內容 多行注釋: ''' 被注釋內容 '''

6、聲明變量注意事項有哪些?

1)由字母、數字和下划線構成,不能以數字開頭,不能任意特殊字符
2)變量定義規范,使用駝峰式或者下划線式格式 3)變量定義盡量簡明,易懂,方便使用者應用

7、利用內置函數chr(),ord()以及random模塊寫一個簡單隨機4位驗證碼

復制代碼
import random tmp=''                        # 最后生成的隨機碼 for i in range(4): n=random.randrange(0,2)            # 生成隨機數1或0,用來判斷下面,是生成隨機數字,還是字母 if n==0: num = random.randrange(65, 91)      # 為0時候,生成大寫字母 tmp+=chr(num) else: k=random.randrange(0,10)         # 為1時候,生成數字 tmp+=str(k) print(tmp)                      # 這里運行的時候每次生成的4為隨機碼都不同
復制代碼

8、如何查看變量在內存中的地址?

>>> name = 'Alex' >>> id(name) 3071018080

9、執行Python程序時,自動生成的.pyc文件的作用是什么?

Python執行前生成的編譯字節碼文件

10、寫代碼

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

復制代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_  username = input("請輸入用戶名:") password = input("請輸入密碼:") if username == 'seven' and password == '123': print("登錄成功") else: print("登錄失敗")
復制代碼

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

復制代碼
# cat a.py  #!/usr/bin/env python # _*_ coding:utf-8 _*_  error_num = 0 while True: username = input("請輸入用戶名:") password = input("請輸入密碼:") if username == 'seven' and password == '123': print("登錄成功") break else: print("登錄失敗") error_num += 1 if error_num == 3: exit() else: continue # python3 a.py 請輸入用戶名:1 請輸入密碼:1 登錄失敗 請輸入用戶名:1 請輸入密碼:1 登錄失敗 請輸入用戶名:1 請輸入密碼:1 登錄失敗 mads@mads-virtual-machine:~$ python3 a.py 請輸入用戶名:seven 請輸入密碼:123 登錄成功
復制代碼

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

復制代碼
# cat a.py  #!/usr/bin/env python # _*_ coding:utf-8 _*_  error_num = 0 while True: username = input("請輸入用戶名:") password = input("請輸入密碼:") if username == 'seven' or username == 'alex' and password == '123': print("登錄成功") break else: print("登錄失敗") error_num += 1 if error_num == 3: exit() else: continue # python3 a.py 請輸入用戶名:3 請輸入密碼:3 登錄失敗 請輸入用戶名:3 請輸入密碼:3 登錄失敗 請輸入用戶名:33 請輸入密碼:33 登錄失敗 # python3 a.py 請輸入用戶名:seven 請輸入密碼:123 登錄成功 # python3 a.py 請輸入用戶名:alex 請輸入密碼:123 登錄成功
復制代碼

11、寫代碼

1)使用while循環實現輸出2-3+4-5+6.....+100的和

復制代碼
#!/usr/bin/env python sum = 0 for i in range(2,101): if i % 2 == 0: sum += i else: sum -= i print(i,sum) print("sum:",sum)
復制代碼

 2)求1-2+3-4+5 ... 99的所有數的和

復制代碼
方法1:傻逼到家的方法
sum1 =0 sum2 = 0 for i in range(1,100,2): sum1 += i for j in range(2,100,2): sum2 +=j sum3 = sum1 -sum2 print(sum3) 方法2:正常程序猿的方法 sum=0 for i in range(0,100): if i%2==0: sum-=i else: sum+=i print(sum)
復制代碼

3)使用while循環輸入 1 2 3 4 5 6     8 9 10

復制代碼
i=0
while i<10: i += 1 if i == 7: continue else: print(i)
復制代碼

4)輸出 1-100 內的所有奇數

for i in range(1,100,2): print(i)

5)輸出 1-100 內的所有偶數

for i in range(2,100,2): print(i)

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

復制代碼
bin()  # 二進制 oct() # 八進制 hex() # 十六進制 >>> a = [5,10,32,7] >>> for i in a: ... print(i,":",bin(i)) ... 5 : 0b101 10 : 0b1010 32 : 0b100000 7 : 0b111
復制代碼

13、簡述對象和類的關系

對象是類的實例化

14、現有如下兩個變量,請簡述n1和n2是什么關系?

# 兩個變量引用同一個內存地址 >>> n1 = 123 >>> n2 = 123 >>> print(id(n1),id(n2)) 1582456464 1582456464

15、現有如下兩個變量,請簡述n1和n2是什么關系?

# 兩個變量引用同一個內存地址 >>> n1 = 123456 >>> n2 = n1 >>> print(id(n1),id(n2)) 1990112 1990112

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

>>> n1 = 5
>>> bytes(n1)
b'\x00\x00\x00\x00\x00' >>> len(bytes(n1)) 5

17、布爾值分別有什么?

真 假
True False
0 1

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

復制代碼
a = "alex"
b = a.capitalize()
print(a)
print(b)

結果:
>>> a = "alex" >>> b = a.capitalize() >>> print(a) alex >>> print(b) Alex
復制代碼

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

name = " aleX "
a.移除name變量對應的值兩邊的空格,並輸入移除有的內容
b.判斷name變量對應的值是否以 "al"開頭,並輸出結果
c.判斷name變量對應的值是否以 "X"結尾,並輸出結果
d.將name變量對應的值中的 " l" 替換為 " p",並輸出結果
e.將name變量對應的值根據 " l" 分割,並輸出結果。
f.請問,上一題 e分割之后得到值是什么類型?
g.將name變量對應的值變大寫,並輸出結果
h.將name變量對應的值變小寫,並輸出結果
i.請輸出name變量對應的值的第2個字符?
j.請輸出name變量對應的值的前3個字符?
k.請輸出name變量對應的值的后2個字符?
l.請輸出name變量對應的值中 "e" 所在索引位置?

復制代碼
>>> name = " aleX " >>> name.strip() 'aleX' >>> name.startswith("al") False >>> name.endswith("X") False >>> name.replace("l","p") ' apeX ' >>> name.split('l') [' a', 'eX '] >>> type(name.split('l')) <class 'list'> >>> name.upper() ' ALEX ' >>> name.lower() ' alex ' >>> name[1] 'a' >>> name[:2] ' a' >>> name[-2:] 'X ' >>> name.index("e") 3
復制代碼

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

復制代碼
>>> name = " aleX " >>> for i in name: ... print(i) ... a l e X >>>
復制代碼

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

>>> li = ['alex','eric','rain'] >>> "_".join(li) 'alex_eric_rain'

22、寫代碼,有如下列表,按照要求實現每一個功能(所有練習題同樣適用於元組)

li = ['alex','eric','rain']    
a.計算列表長度並輸出
b.列表中追加元素"seven",並輸出添加后的列表
c.請在列表的第1個位置插入元素 "Tony",並輸出添加后的列表
d.請修改列表第2個位置的元素為 "Kelly",並輸出修改后的列表
e.請刪除列表中的元素"eric",並輸出修改后的列表
f.請刪除列表中的第2個元素,並輸出刪除的元素的值和刪除元素后的列表
g.請刪除列表中的第3個元素,並輸出刪除元素后的列表
h.請刪除列表中的第2至4個元素,並輸出刪除元素后的列表
i.請將列表所有的元素反轉,並輸出反轉后的列表
j.請使用for、len、range 輸出列表的索引
k.請使用enumrate輸出列表元素和序號(序號從 100 開始)
l.請使用for循環輸出列表的所有元素

復制代碼
>>> li = ['alex','eric','rain'] >>> print(len(li)) 3 >>> li.append("seven") >>> li ['alex', 'eric', 'rain', 'seven'] >>> li.insert(0,"Tony") >>> li ['Tony', 'alex', 'eric', 'rain', 'seven'] >>> li[1] = 'Kelly' >>> li ['Tony', 'Kelly', 'eric', 'rain', 'seven'] >>> li.remove('eric') >>> li ['Tony', 'Kelly', 'rain', 'seven'] f: >>> li[1] 'Kelly' >>> del li[1] >>> li ['Tony', 'rain', 'seven'] g: >>> del li[2] >>> li ['Tony', 'rain'] h: >>> li ['Tony', 'alex', 'eric', 'rain'] >>> li[1:3] ['alex', 'eric'] >>> del li[1:3] >>> li ['Tony', 'rain'] i: >>> li[::-1] ['Tony', 'alex', 'eric', 'rain'] >>> li = ['alex','eric','rain'] >>> li.reverse() >>> li ['rain', 'eric', 'alex'] j: >>> li ['rain', 'eric', 'alex'] >>> for i in range(len(li)): ... print(i) ... 0 1 2 k: >>> li ['rain', 'eric', 'alex'] >>> for k,v in enumerate(li,100): ... print(k,".",v) ... 100 . rain 101 . eric 102 . alex l: >>> li ['rain', 'eric', 'alex'] >>> for i in li: ... print(i) ... rain eric alex
復制代碼

 22、寫代碼,有如下列表,請按照功能要求實現每一個功能
li = ["hello",'seven',["mon",["h","kelly"],'all'],123,446]
a.請輸出"Kelly"
b.請使用索引找到 'all'元素並將其修改為"ALL"

復制代碼
>>> li = ["hello",'seven',["mon",["h","kelly"],'all'],123,446] >>> li[2][1][1] 'kelly' >>> s = li[2][1][1] >>> s.capitalize() 'Kelly'

>>> index = li[2].index("all")
>>> li[2][index] = "ALL"
>>> li
['hello', 'seven', ['mon', ['h', 'kelly'], 'ALL'], 123, 446]
復制代碼

25、有如下變量,請實現要求的功能
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
a. 講述元祖的特性
b. 請問 tu 變量中的第一個元素 "alex" 是否可被修改?
c. 請問 tu 變量中的"k2"對應的值是什么類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"
d. 請問 tu 變量中的"k3"對應的值是什么類型?是否可以被修改?如果可以,請在其中添加一個元素 "Seven"

復制代碼
a:元組具有列表的全部特性,不同的是,元組的元素不能修改
b:不能
>>> tu[0] = 'cc' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment c:列表,能被修改 >>> tu ('alex', [11, 22, {'k2': ['age', 'name'], 'k1': 'v1', 'k3': (11, 22, 33)}, 44]) >>> tu[1][2]["k2"].append("cc") >>> tu ('alex', [11, 22, {'k2': ['age', 'name', 'cc'], 'k1': 'v1', 'k3': (11, 22, 33)} 44]) d:元組,不能 >>> tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44]) >>> tu[1][2]["k3"].append("cc") Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'tuple' object has no attribute 'append'
復制代碼

26、字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
a. 請循環輸出所有的 key
b. 請循環輸出所有的 value
c. 請循環輸出所有的 key 和 value
d. 請在字典中添加一個鍵值對, "k4":"v4",輸出添加后的字典
e. 請在修改字典中 "k1" 對應的值為 "alex",輸出修改后的字典
f. 請在 k3 對應的值中追加一個元素 44,輸出修改后的字典
g. 請在 k3 對應的值的第 1 個位置插入個元素 18,輸出修改后的字典

復制代碼
>>> dic={'k1':"v1","k2":"v2","k3":[11,22,33]} >>> for k in dic.keys(): ... print(k) ... k2 k1 k3 >>> for v in dic.values(): ... print(v) ... v2 v1 [11, 22, 33]
>>> for k,v in dic.items(): ... print(k,v) ... k2 v2 k1 v1 k3 [11, 22, 33] >>> dic {'k2': 'v2', 'k1': 'v1', 'k3': [11, 22, 33]} >>> dic["k4"] = "v4" >>> dic {'k2': 'v2', 'k1': 'v1', 'k4': 'v4', 'k3': [11, 22, 33]} >>> dic["k1"] = "alex" >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [11, 22, 33]} >>> dic["k3"].append(44) >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [11, 22, 33, 44]} >>> dic["k3"].insert(0,18) >>> dic {'k2': 'v2', 'k1': 'alex', 'k4': 'v4', 'k3': [18, 11, 22, 33, 44]}
復制代碼

27、轉換
a. 將字符串 s="alex" 轉換成列表
b. 將字符串 s="alex" 轉換成元祖
b. 將列表 li=["alex","seven"] 轉換成元組
c. 將元祖 tu=('Alex',"seven") 轉換成列表
d. 將列表 li=["alex","seven"] 轉換成字典且字典的 key 按照 10 開始向后遞增

復制代碼
>>> s = "alex" >>> list(s) ['a', 'l', 'e', 'x'] >>> tuple(s) ('a', 'l', 'e', 'x') >>> li=["alex","seven"] >>> tuple(li) ('alex', 'seven') >>> tu=('Alex',"seven") >>> list(tu) ['Alex', 'seven'] >>> li=["alex","seven"] >>> li_dic = {} >>> for k,v in enumerate(li,10): ... li_dic[k] = v ... >>> li_dic {10: 'alex', 11: 'seven'}
復制代碼

27、轉碼
n="老男孩"
a. 將字符串轉換成 utf-8 編碼的字節,並輸出,然后將該字節再轉換成 utf-8 編碼字符串,再輸出
a. 將字符串轉換成 gbk 編碼的字節,並輸出,然后將該字節再轉換成 gbk 編碼字符串,再輸出

復制代碼
>>> n = "老男孩" >>> n.encode("utf-8") b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9' >>> n.encode().decode("utf-8") '老男孩' >>> n = "老男孩" >>> n.encode('gbk') b'\xc0\xcf\xc4\xd0\xba\xa2' >>> n.encode('gbk').decode('gbk') '老男孩'
復制代碼

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

>>> sum = 0
>>> for i in range(1,101): ... sum += i ... >>> sum 5050

29、元素分類
有如下值集合 [11,22,33,44,55,66,77,88,99,90],將所有大於 66 的值保存至字典的第一個 key 中,將小於 66 的值保存至第二個 key 的值中。
即: {'k1': 大於 66 的所有值,'k2': 小於 66 的所有值}

復制代碼
# 自定義方法實現 def f1(args): result = [] for item in args: if item > 66: result.append(item) return result li = [11, 22, 33, 44, 55] ret = f1(li) print(ret) # 通過filter功能實現需求 def f2(a): if a > 66: return True li = [11, 22, 33, 44, 55] res = filter(f2, li) print(list(res))
復制代碼

30、購物車
功能要求:
要求用戶輸入總資產,例如: 2000
顯示商品列表,讓用戶根據序號選擇商品,加入購物車
購買,如果商品總額大於總資產,提示賬戶余額不足,否則,購買成功。
goods=[
{"name":"電腦","price":1999},
{"name":"鼠標","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]

31、查找元素,移除空格,並查找以 a或A開頭 並且以 c 結尾的所有元素
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}

復制代碼
for i in li: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in tu: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in dic.values(): if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print (i)
復制代碼

32、用戶交互,顯示省市縣三級聯動的選擇

dic = {
    "河北": {
        "石家庄": ["鹿泉", "藁城", "元氏"],
        "邯鄲": ["永年", "涉縣", "磁縣"],
    },
    "湖南": {
        "長沙":['a','b','c'],
        "株洲":['d','e','f']
    },
    "湖北": {
        "武漢":['g','h','i'],
        "黃石":['j','k','l']
    }
}

 

出處:http://www.cnblogs.com/madsnotes/

聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。


免責聲明!

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



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