Python第二
阿新 • • 發佈:2020-08-05
今日內容概要
-
基本運算子
-
流程控制
-
字元編碼
理論特別多、結論特別少
-
檔案處理
今日內容詳細
基本運算子
1.算數運算子 x = 1 y = 5 res = x + y #加 res1 = x - y #減 res2 = x * y #乘 res3 = x / y #除 2.比較運算子 a = 1 b = 10 a > b a < b a >= b a <= b a == b #一個等號是賦值符號 兩個等號才是真正的等號 3.賦值運算子 username = 'jason' 4.增量賦值 x = 10 x = x + 1 # x += 1 x = x - 1 # x -= 1 x = x * 1 # x *= 1 x = x / 1 # x /= 1 5.解壓賦值 name_list = [111,222,333,444,555] a = name_list[0] b = name_list[1] c = name_list[2] d = name_list[3] e = name_list[4] # 鏈式賦值操作 #a,b,c,d,e = name_list # print(a,b,c,d,e) # 左右兩側數量要一致(列表有五個元素那麼賦值符號的左邊就應該有五個變數名) # res1,res2 = name_list # too many values to unpack (expected 2) # res1,res2,res3,res4,res5,res6 = name_list # not enough values to unpack (expected 6, got 5) # ret,*a = name_list # *號可以將多餘的元素統一組織成列表賦值給後面的變數名 # print(ret,a) # 111 [222, 333, 444, 555] 6.交叉賦值 m = 666 n = 999 #將m和n的值互換 res = m m = n n = res print(m,n) # 交叉賦值 m,n = n,m print(m,n) 7.解壓賦值 a = 100 b = a c = a d = a # 簡寫 a = b = c = d = 100 8.邏輯運算 and 與 or 或 not 非 and連結多個條件必須多個條件都為true結果才為true,只要有一個是false那麼結果就是false or連結多個條件只需要有一個條件為true結果就為true,只要所有的都是false那麼結果才是false # and,or,三者如果混用時,是存在優先順序之分的,但在日常開發中我們無需記優先順序,應該使用()來區分優先順序、提升程式的可讀性 9.成員運算 >>>'lili' in ['jack','tom','robin'] false >>>'lili' not in ['jack','tom','robin'] true 10.身份運算 #1.id相同 記憶體地址必定相同,意味著type和values必定相同 #2.value相同type肯定相同,但是IP不一定相同,如下 >>> x='Info Tony:18' >>> y='Info Tony:18' >>> id(x),id(y) # x與y的id不同,但是二者的值相同 (4327422640, 4327422256) >>> x == y # 等號比較的是value True >>> type(x),type(y) # 值相同type肯定相同 (<class 'str'>, <class 'str'>) >>> x is y # is比較的是id,x與y的值相等但id可以不同 False
流程控制
""" ********************************************** python中是通過程式碼的縮排來表示程式碼的從屬關係 if 條件1: 程式碼1 程式碼2 這裡的程式碼1和程式碼2縮進了,所以它們是屬於if的,它們能不能執行完全取決於if 冒號後面才可以有子程式碼,並且多個子程式碼必須是相同的縮排量 ********************************************** """ if 條件1: # 如果條件1的結果為True,就依次執行:程式碼1、程式碼2,...... 程式碼1 程式碼2 ...... elif 條件2: # 如果條件2的結果為True,就依次執行:程式碼3、程式碼4,...... 程式碼3 程式碼4 ...... elif 條件3: # 如果條件3的結果為True,就依次執行:程式碼5、程式碼6,...... 程式碼5 程式碼6 ...... else: # 其它情況,就依次執行:程式碼7、程式碼8,...... 程式碼7 程式碼8 ...... # 注意: # 1、python用相同縮排(4個空格表示一個縮排)來標識一組程式碼塊,同一組程式碼會自上而下依次執行 # 2、條件可以是任意表達式,但執行結果必須為布林型別 # 在if判斷中所有的資料型別也都會自動轉換成布林型別 # 2.1、None,0,空(空字串,空列表,空字典等)三種情況下轉換成的布林值為False # 2.2、其餘均為True
while迴圈
while 條件: 程式碼1 程式碼2 程式碼3 …… #while的執行步驟: # 步驟1:如果條件為真,那麼依次執行:程式碼1、程式碼2、程式碼3、# 步驟2:執行完畢後再次判斷條件,如果條件為True則再次執行:程式碼1、程式碼2、程式碼3、......,如果條件為False,則迴圈終止 while True: # 1 先獲取使用者的使用者名稱和密碼 username = input('請輸入您的使用者名稱>>>:') password = input('請輸入您的密碼>>>:') # 2 拿著使用者名稱和密碼去資料庫裡面比對select * from userinfo where username=username and password=password; if username == 'jason' and password == '123': print('登入成功') else: print('使用者名稱或者密碼錯誤') # 使用者輸入了正確的使用者名稱和密碼之後 應該結束迴圈 # while True: # # 1 先獲取使用者的使用者名稱和密碼 # username = input('請輸入您的使用者名稱>>>:') # password = input('請輸入您的密碼>>>:') # # 2 拿著使用者名稱和密碼去資料庫裡面比對select * from userinfo where username=username and password=password; # if username == 'jason' and password == '123': # print('登入成功') # # 應該結束掉while迴圈 # break # break只能結束掉它所屬的那一個while迴圈 # else: # print('使用者名稱或者密碼錯誤') # print('我終於出來啦') # while True: # # 1 先獲取使用者的使用者名稱和密碼 # username = input('請輸入您的使用者名稱>>>:') # password = input('請輸入您的密碼>>>:') # # 2 拿著使用者名稱和密碼去資料庫裡面比對select * from userinfo where username=username and password=password; # if username == 'jason' and password == '123': # print('登入成功') # while True: # cmd = input('親愛的貴賓有什麼可以幫助您的>>>:') # if cmd == 'exit': # break # break只能結束掉它所屬的那一個while迴圈 # print('真正幫您執行:%s'%cmd) # break # else: # print('使用者名稱或者密碼錯誤') # print('我終於出來啦') # 當你想一次性結束多層while巢狀 你可以考慮使用標誌位 # flag = True # while flag: # # 1 先獲取使用者的使用者名稱和密碼 # username = input('請輸入您的使用者名稱>>>:') # password = input('請輸入您的密碼>>>:') # # 2 拿著使用者名稱和密碼去資料庫裡面比對select * from userinfo where username=username and password=password; # if username == 'jason' and password == '123': # print('登入成功') # while flag: # cmd = input('親愛的貴賓有什麼可以幫助您的>>>:') # if cmd == 'exit': # flag = False # print('真正幫您執行:%s'%cmd) # else: # print('使用者名稱或者密碼錯誤') # print('我終於出來啦') # 用while迴圈列印1,2,3,4,5,6,7,9 num = 1 while num < 10: # 如果num是8就不列印 if num == 8: num += 1 continue # 結束它所屬的那一個while的本次迴圈直接開始下一次迴圈 print(num) num += 1 """ break不給機會了 直接結束 continue再給一次機會 重新開始 """
for迴圈
for 變數名 in 可迭代物件: #此時只需知道可迭代物件可以是字串\列表\字典
程式碼一
程式碼二
#例一
for item in['a','b','c']:
print(item)
# 執行結果
a
b
c
# 參照例1來介紹for迴圈的執行步驟
# 步驟1:從列表['a','b','c']中讀出第一個值賦值給item(item=‘a’),然後執行迴圈體程式碼
# 步驟2:從列表['a','b','c']中讀出第二個值賦值給item(item=‘b’),然後執行迴圈體程式碼
# 步驟3: 重複以上過程直到列表中的值讀盡
資料型別及內建方法
在Python中不同的資料型別之間預設是無法直接做操作的
整型和浮點型本身沒有其他多餘的內建方法
# ret = '666' + 3
# print(ret) # 在python中不同的資料型別之間預設是無法直接做相互操作的
# res = int('666') + 3 # int('666') = 666
# print(res)
# res = int('666.6') + 3 # 報錯
# print(res)
# res = float('666.6') + 3
# print(res)
# res = int('abc') + 3 # 報錯
# print(res)
while True:
num = input('>>>:')
# 判斷使用者輸入的字串是否是純數字
if num.isdigit():
num = int(num)
res = num + 10
print(res)
else:
print('必須輸入純數字')
# 字串
# n = 111
# f = 11.11
# l = [1,2,3,4]
# d = {'username':'jason'}
# res1 = str(n)
# res2 = str(f)
# res3 = str(l)
# res4 = str(d)
# print(res1,res2,res3,res4) # 任何資料型別都可以轉字串
s = 'hello jason you are very handsome!!! 666 NB'
# 1 索引取值
# print(s[0])
# print(s[0:8]) # 顧頭不顧尾
# print(s[0:8:2]) # 步長
# print(s[-1:-5:-1]) # 瞭解
# 2 長度
# print(len(s))
# 3 成員運算
# print('666' in s)
# 4 移除首位的空白
# username = input('》》》:').strip()
# if username == 'jason':
# print('老闆好')
# res = '$$jas$on$$'
# print(res.strip('$')) # jas$on
# 5 切割
user_info = 'jason|123|NB|study'
# res = user_info.split('|')r
# print(res) # ['jason', '123', 'NB', 'study']
# res = user_info.split('|',maxsplit=1) # 從左往右
# print(res) # ['jason', '123|NB|study']
# res = user_info.rsplit('|',maxsplit=1) # 從右往左
# print(res) # ['jason|123|NB', 'study']
猜年齡題
while x == 0:
if n < 3:
username = input('exit退出\n請輸入使用者名稱:')
if username == "exit":
break
pwd = input("請輸入密碼:")
if username == 'x' and password == '900876':
x = 0
y = 0
import random
def game():
w = 1
while w == 1:
n = 1
n2 = 6
age = random.randint(0,10)
while True:
if n < n2:
age = input("第%s猜:"%n).str:
if age.lsdigit() == False:
print(int("你確定嗎?")
elif int(age) < age:
print("第%s次猜小了"%n)
n += 1
elif int(age) > age:
print("第%s次猜大了"%n)
n += 1
else:
r = input("第%s次猜對了!!!\n按y再玩一次\n按n退出遊戲\n輸入exit退出程式"%b).strip()
if r == "n":
break
elif r == "n":
z = 0
break
elif d == "exit":
global x
z = 0
x = 1
break
else:
if n2 == 11:
print("你總算猜對了!")
elif n2 == 16:
print("你是認真的嗎!")
elif n2 == 21:
print("不會有人%s次都猜不出吧!\n不會吧!\n不會吧!!\n不會吧!!!"%(b-1))
elif n2 > 21:
print("別玩了!你夠了!!")
d = input("你已經猜錯%s次了,按y增加五次機會"%(b-1))
if d == "y":
n2 += 5
continue
else:
x = 1
z = 0
break
else:
print("賬號密碼錯誤")
n += 1
else:
c = input("你已輸錯三次,按y在獲得三次機會,其他退出。")
if c == "y":
n = 0
else:
break