寫在前面:
今天下雪了呢!連着兩天都沒有更新學習記錄。
我沒有偷懶呢。做了一天的練習題,昨天學的內容還沒總結完,太累了就回去睡覺了
連續一周早起,強大的內心也無法支撐我疲憊的身體
今天早起做了整理。加油哦(貴在堅持,一定要好好堅持下去)
1.執行 Python 腳本的兩種方式
(1)進入python解釋器,等待用戶實時輸入
(2)python.exe + 執行文件的路徑
2.簡述位、字節的關系
1字節 = 8位
3.簡述 ASCII,Unicode,utf-8、gbk 的關系
ASCII是最早美國用的標准信息交換碼,把所有的字母的大小寫,各種符號用二進制來表示,共有256中,加入些拉丁文等字符,1bytes代表一個字符.
Unicode是為了統一世界各國語言的不用,統一用2個bytes代表一個字符,可以表達2**16=65556個,稱為萬國語言,特點:速度快,但浪費空間,可以用在內存處理中,兼容了utf-8,gbk,ASCII.
utf-8是為了改變Unicode的浪費內存空間的缺點,規定1個英文字符用1個字節表示,1個中文字符用3個字節表示,特點;節省空間,速度慢.
gbk是中文的字符編碼,用2個字節代表一個字符.
4.請寫出 “李傑” 分別用 utf-8 和 gbk 編碼所占的位數
utf-8: 48位
gbk: 32位
5.Pyhton 單行注釋和多行注釋分別用什么?
單行注釋: #
多行注釋: """......"""
6.聲明變量注意事項有那些?
變量由數字、字母和下划線構成。
需要注意三點:第一,第一位不可以是數字;第二,不可以使用python里的關鍵字;第三,盡量不要和python內置的東西重復
7.如有一下變量 n1 = 5,請使用 int 的提供的方法,得到該變量最少可以用多少個二進制位表示?
程序: test = 5 v = test.bit_length() print(v) 運行結果: 3
8.布爾值分別有什么?
真(True)或假(False),真為1 假為0
9.閱讀代碼,請寫出執行結果
a = "alex" b = a.capitalize() print(a) print(b)
請寫出輸出結果: alex Alex
#(說明字符串一旦創建便不可修改)
10.寫代碼,有如下變量,請按照要求實現每個功能
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 個字符?
程序:
name = ' aleX' a = name.lstrip() b = name. startswith('al') c = name.endswith('X') d = name.replace('l','p') e = name.partition('l') f = type(e) g = name.upper() h = name.lower() i = name[1] print(a,b,c,d,e,f,g,h,i)
運行結果:
aleX False True apeX (' a', 'l', 'eX') <class 'tuple'> ALEX alex
#請輸出 name 變量對應的值的前 3 個字符
for j in range(0,3): print((name[j])) 運行結果: a
k. 請輸出 name 變量對應的值的后 2 個字符?
l. 請輸出 name 變量對應的值中 “e” 所在索引位置?
m. 獲取子序列,僅不包含最后一個字符。如: oldboy 則獲取 oldbo; root 則獲取 roo
#k.程序一: name = ' aleX' for j in range(4,6): print(name[j]) #k.程序二: name = ' aleX' v = name[4:6] print(v) #k.程序三: name = ' aleX' v1 = name.find('e') v2 = name.find('X') for j in range(v1,v2 + 1): print(name[j])‘ #l.程序: name = ' aleX' v1 = name.find('e') print(v1) #m.程序: name = ' aleX' v1 = name.find('X') v2 = name[0:v1] print(v2)
21.字符串是否可迭代對象?如可以請使用 for 循環每一個元素?
字符串為可迭代對象。
程序: test = 'abcdefg' for j in test: print(j)
#簡單的來理解,可迭代對象為可以被for進行循環獲取的
22.請用代碼實現:
a. 利用下划線將列表的每一個元素拼接成字符串,li = "alexericrain"
b. 利用下划線將列表的每一個元素拼接成字符串,li = ['alex', 'eric', 'rain']
a.程序: li = "alexericrain" v = '_'.join(li) print(v) b.程序: li = ['alex', 'eric', 'rain'] v1 = ''.join(li) v2 = '_'.join(v1) print(v2)
#b題的程序我是在還沒有學習列表知識前就試着想把列表轉成字符串來處理。
#是因為我理解錯題目意思了,對於列表中的每一個元素,是用逗號來分割的。
#改程序如下: li = ['alex', 'eric', 'rain'] v1 = '_'.join(li) print(v1)
23.Python2 中的 range 和 Python3 中的 range 的區別
在Python2中,range一旦創建,內存便開辟,連續數字已經創建。python中有xrange,用法同Python中的range
在Python3中,rang創建之后,需要通過for循環來一個一個創建連續數字,也可以通過參數設置來確定步長
24.實現一個整數加法計算器
程序: while True: num1 = input('請輸入第一個加數:') x1 = int(num1) num2 = input('請輸入第二個加數:') x2 = int(num2) print(x1,'+',x2,'=',x1 + x2)
#我想,我的理解能力真的有待提高,老師的意思是用戶直接輸入5+9,讓我來寫程序計算結果(手動捂臉)
#修改程序:
while True: test1 = input(">>>") test2 = test1.partition('+') v1 = int(test2[0]) v2 = int(test2[2]) print(v1+v2)
25.計算用戶輸入的內容中有幾個十進制小數?幾個字母?
test = input(">>>") m = 0 n = 0 for j in test: if (96 < ord(j) < 123) or (64 < ord(j) < 91): m += 1 elif 47 < ord(j) < 58: n += 1 else: pass print('字母個數:',m,'數字個數:',n)
26.簡述 int 和 9 等數字以及 str 和 "xxoo" 等字符串的關系?
類和對象的關系
27.制作趣味模板程序
需求:等待用戶輸入名字、地點、愛好,根據用戶的名字和愛好進行任意現實
while True: test1 = input('請輸入您的姓名:') test2 = input('請輸入您喜歡做的事情:') test3 = input('請輸入您喜歡在哪里做喜歡的事情') v1 = [test1,'最喜歡在',test3,test2] v2 = ''.join(v1) print(v2)
#我好想總是喜歡把問題復雜化,可能是學過的知識不能靈活應用
#慢慢來吧,其實這個題用.format直接格式化會很簡單
#程序修改: while True: test = '敬愛可親的{0},最喜歡在{1}{2}' name = input('請輸入您的姓名:') something = input('請輸入您喜歡做的事情:') place = input('請輸入您喜歡在哪里做喜歡的事情:') v = test.format(name,place,something) print(v)
28.制作隨機驗證碼,不區分大小寫。
流程:
- 用戶執行程序
- 給用戶顯示需要輸入的驗證碼
- 用戶輸入的值
- 用戶輸入的值和顯示的值相同時現實正確信息;否則繼續生成隨機驗證碼繼續等待用戶輸入
#隨機驗證碼產生 def check_code(): import random checkcode = '' for i in range(4): current = random.randrange(0,4) if current != i: temp = chr(random.randint(65,90)) else: temp = random.randint(0,9) checkcode += str(temp) return checkcode while True: code = check_code() print(code) usercode = input('>>>') v = usercode.upper() if v == code: print('驗證碼輸入正確') break else: print('驗證碼輸入錯誤')
29.開發敏感詞語過濾程序,提示用戶輸入內容,如果用戶輸入的內容中包含特殊的字符:
如 "蒼老師" "東京熱",則將內容替換為 ***
while True: test = input('>>>') v = test.replace('東京熱','***') v = v.replace('蒼井空','***') print(v)
30. 制作表格
循環提示用戶輸入:用戶名、密碼、郵箱 (要求用戶輸入的長度不超過 20 個字符,如果超過則只有前 20 個字符有效)
如果用戶輸入 q 或 Q 表示不再繼續輸入,將用戶輸入的內容以表格形式打印
while True: test1 = input('username:') test2 = input('password;') test3 = input('mailbox:') test4 = ' username\t password\t mailbox\n' test5 = [test1, '\t', test2, '\t', test3] v1 = test4.expandtabs(20) v2 = ''.join(test5) v4 = v2.expandtabs(20) print(v1, v4) if input('') == 'q' or 'Q': break else: pass
#我自己寫的這個程序后面發現是有點問題的,因為只能打印一個用戶的信息,當下一個用戶信息輸入時,就會覆蓋掉前一個用戶信息
#程序完善: s = 'username\tpassword\tmailbox\n' while True: test1 = input('username:') test2 = input('password;') test3 = input('mailbox:') template = '{0}\t{1}\t{2}\n' v = template.format(test1,test2,test3) s = s + v if input('') == 'Q' or 'q ': break else: pass print(s.expandtabs(20))
其實,要想實現一個功能,程序可以有很多種方法。我們不僅僅是局限於當期,寫完一個程序要多思考、多完善。加油!