目錄
基本數據類型之布爾值bool
1.用來判斷事物的對錯 是否可行 只要用於流程控制中
2.只有兩種狀態
True 對的 真的 可行的
False 錯的 假的 不可行的
3.python中所有數據都自帶布爾值
布爾值為False的數據有:0 None '' [] {}
布爾值為True的數據有:除了上面的都是True
4.存儲布爾值的變數名一般推薦使用is開頭
is_delete = False
is_alive = True
"""
很多程式中提供的註銷帳戶的功能 其實底層並沒有刪除數據 而是修改了數據的狀態
id username password phone is_delete
1 jimmy 123 110 1
2 kevin 321 120 0
"""
EX:
基本數據類型之元組tuple
1.也稱為『不可變』的列表
元組內索引綁定的記憶體位址不能修改
2.小括弧括起來 內部存放多個數據值 數據值與數據值之間逗號隔開 數據值可以是任何數據類型
3.代碼實現
t1 = (11, 22, 'jimmy')
4.元組與列表的對比
# 列表
l1 = [11, 22, 33]
print(l1[0]) # 獲取索引0對應的數據值
l1[0] = 666
print(l1) # [666, 22, 33]
# 元組
t1 = (11, 22, 33)
print(t1[0])
t1[0] = 999
print(t1) # 報錯
# 練習題 元組混列表
t1 = (11, 22, [111, 222])
t1[2][1] = 666
print(t1) # (11, 22, [111, 666])
"""
A.直接報錯
B.(11, 22, [111, 666])
C.不知道 超出了我的認知
"""
5.元組內如果只有一個數據值
t1 = (1)
t2 = (11.11)
t3 = ('Jimmy')
print(type(t1), type(t2), type(t3)) # <class 'int'> <class 'float'> <class 'str'>
t1 = (1,)
t2 = (11.11,)
t3 = ('Jimmy',)
print(type(t1), type(t2), type(t3)) # <class 'tuple'> <class 'tuple'> <class 'tuple'>
"""
建議:以後在使用可以存放多個數據值的數據類型時 如果裡面暫時只有一個數據值 那麼也建議你加上逗號
"""
EX1:元組與列表的對比
列表:
圖解:
元組:
圖解:
EX2:練習題 元組混列表
圖解:
EX3:元組內如果只有一個數據值
基本數據類型之集合set
1.集合只能用於去重和關係運算
後面再講 暫且忽略
2.集合內數據只能是不可變類型
後面再講 暫且忽略
3.大括弧括起來 內部存放多個數據值 數據值與數據值之間逗號隔開 數據值不是k:v鍵值對
4.代碼實現
s1 = {1, 2, 3, 4, 5, 6}
5.定義空集合與空字典
{} 預設是字典
set() 定義空集合
EX1:定義空集合
與使用者交互
1.獲取使用者輸入
input
# 獲取使用者輸入
username = input('請輸入您的使用者名>>>:')
"""
1.先執行input獲取用戶輸入
2.將輸入的數據綁定給變數名username
3.以後在程式中就可以使用變數名反覆調用用戶數據
"""
強調:input獲取到的數據都會統一處理成字串類型
2.輸出內部資訊
print
1.括弧內既可以放數據值也可以放變數名 並且支援多個 逗號隔開即可
2.print自帶換行符
換行符:\r\n \n(斜杠與字母組合到一起可能會產生特殊的含義)
3.print也可以切換結束符
print(數據,end='預設是\n')
擴展:python2與python3中兩個關鍵字的區別
python2中
input方法需要使用者自己提前指定數據類型 寫什麼類型就是什麼類型
raw_input方法與python3中input一致 輸入的統一處理成字串
python2中
print方法有兩種使用方式
print 數據值
print(資料值)
EX1:1.獲取使用者輸入
EX2:input獲取到的數據都會統一處理成字串類型
EX3:輸出內部資訊
EX4:2.print自帶換行符
EX5:3.print也可以切換結束符
EX6:python2與python3中兩個關鍵字的區別
python2
input方法需要使用者自己提前指定數據類型 寫什麼類型就是什麼類型
raw_input方法與python3中input一致 輸入的統一處理成字串
python2
print方法有兩種使用方式
print 數據值
print(資料值)
格式化輸出
提前定義好一些內容 將來需要使用的時候可以局部修改
代碼實現
在現實生活中大部分情況下使用下劃線提示別人填寫內容
但是在程式中需要使用佔位元:%s %d
info = '%s同學你好'
'''單個佔位符'''
# print(info % 'Jimmy') # Jimmy同學你好
# print('%s同學你好' % 'Tony') # Tony同學你好
# print(info % ('Jimmy',))
# print('%s同學你好' % ('Tony',))
'''多個佔位符'''
# desc = '姓名:%s 年齡:%s 愛好:%s'
# print(desc % ('Jimmy', 18, 'read'))
# print('姓名:%s 年齡:%s 愛好:%s' % ('tony', 28, 'rap'))
'''注意事項:有幾個佔位符就需要幾個數據值'''
# print('my name is %s my age is %s' % ('Jimmy',)) # 少了不行
# print('my name is %s my age is %s' % ('Jimmy', 18, 'read')) # 多了不行
'''不同佔位符的區別'''
# demo1 = '%s您好 您本月的話費是%s 餘額是%s' # %s常見數據類型都支援
# print(demo1 % ('Jimmy', 100, 10000000000000))
# demo2 = '%d您好 您本月的話費是%d 餘額是%d' # %d只支援數字類型
# print(demo2 % ('tony', 1000000000, -100000))
print('%08d'% 123) # 00000123
print('%08d'% 1234324324) # 1234324324
EX1:單個佔位符
EX2:多個佔位符
EX3:注意事項:有幾個佔位符就需要幾個數據值
EX4:不同佔位符的區別
%s常見數據類型都支援
%d只支援數字類型
EX5:%d補位功能
基本運算符
以下假設變數: a=10,b=20:
運算符 | 描述 | 實例 |
---|---|---|
+ | 加 - 兩個物件相加 | a + b 輸出結果 30 |
- | 減 - 得到負數或是一個數減去另一個數 | a - b 輸出結果 -10 |
* | 乘 - 兩個數相乘或是返回一個被重複若干次的字串 | a * b 輸出結果 200 |
/ | 除 - x除以y | b / a 輸出結果 2 |
% | 取餘 - 返回除法的餘數 | b % a 输出结果 0 |
** | 次方 - 返回x的y次方 | a**b 為10的20次方, 輸出結果 100000000000000000000 |
// | 取整除 - 傳回商的整數部分(向下取整) | »>9//2 4, »>-9//2 -5 |
1.數學運算符
+ - * / % // **
簡化寫法
n = 10
n += 1 # n = n + 1
n -= 1 # n = n - 1
n *= 1 # n = n * 1
n /= 1 # n = n / 1
n %= 1 # n = n % 1
n //= 1 # n = n // 1
n **= 1 # n = n ** 1
2.比較運算符
< > <= >= ==(等於號) !=(不等於)
常用賦值符
1.鏈式賦值
# name = 'jimmy'
# name1 = name
# name2 = name
# 鏈式賦值
name = name1 = name2 = 'jimmy'
2.交叉賦值
m = 100
n = 999
'''讓m和n互相轉換綁定的值'''
"""奇葩式寫法"""
# m = n
# n = m
# print(m, n) # 999 999
'''方式1:採用中間變數'''
# temp = m
# m = n
# n = temp
# print(m, n) # 999 100
'''方式2:交叉賦值語法'''
m, n = n, m
print(m, n) # 999 100
3.解壓賦值
name_list = ['jimmy', 'kevin', 'tony', 'oscar']
'''low的寫法'''
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
'''解壓賦值語法'''
# name1, name2, name3, name4 = name_list
'''解壓賦值在使用的時候 正常情況下需要保證左邊的變數名與右邊的數據值個數一致'''
# a, b = name_list # 變數名少了不行
# a, b, c, d, e = name_list # 變數名多了也不行
'''當需要解壓的數據個數特別多 並且我們只需要使用其中的幾個 那麼可以打破上述的規則'''
# a, *b = name_list # *會自動接收多餘的數據 組織成列表賦值給後面的變數名
# print(a) # jimmy
# print(b) # ['kevin', 'tony', 'oscar']
# a, c, *b = name_list
# print(a)
# print(c)
# print(b) # ['tony', 'oscar']
# a, *b, c = name_list
# print(a) # jimmy
# print(b) # ['kevin', 'tony']
# print(c) # oscar
'''當數據值不準備使用的時候 可以使用下劃線作為變數名綁定'''
a, *_, c = name_list
EX1:1.鏈式賦值
EX2:2.交叉賦值
奇葩式寫法:
圖解:
方式1:採用中間變數:
圖解:
方式2:交叉賦值語法:
EX3:3.解壓賦值
解壓賦值在使用的時候 正常情況下需要保證左邊的變數名與右邊的數據值個數一致
變數名少了不行
變數名多了也不行
當需要解壓的數據個數特別多 並且我們只需要使用其中的幾個 那麼可以打破上述的規則
*會自動接收多餘的數據 組織成列表賦值給後面的變數名
當數據值不準備使用的時候 可以使用下劃線作為變數名綁定
邏輯運算符
'''主要配合條件一起使用'''
and 與
and連接的多個條件必須全部成立 結果才成立
1 > 2 and 4 < 8 and 10 < 1 and 1 == 2 如果條件中全部由and組成那麼判斷起來非常的簡單 只要發現一個不成立 結果就不成立
print(1 < 10 and 666) # 666 成立
print(1 < 10 and 2 < 8) # True 成立
print(111 and 222) # 222 成立
如果需要你準確的說出具體的結果值 那麼需要按照下列方式
如果and左邊的條件是成立的 那麼就完全取決於右邊的條件
右邊如果直接是數據值 那麼結果就是該數據值 如果是含有表達式 則為布爾值
or 或
or連接的多個條件只要有一個成立 結果就成立
1 > 2 or 4 < 8 or 10 < 1 or 1 == 2 如果條件中全部由or組成那麼判斷起來非常的簡單 只要發現一個成立 結果就成立
# print(1 < 10 or 666) # True
# print(666 or 1 > 10) # 666
print(0 or False) # False
print(0 or 111) # 111
規律用and
not 非
取反
類似於說反話
print(not 1) # False
print(not 0) # True
"""
三者混合使用的時候有優先順序之分 但是我們不需要記憶優先順序 應該通過代碼的形式提前規定好優先順序
eg: 先乘除後加減 但是可以使用括弧來改變優先順序
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""
EX1:and
EX2:or
EX3:not
三者混合使用的時候有優先順序之分 但是我們不需要記憶優先順序 應該通過代碼的形式提前規定好優先順序
成員運算符
判斷個體在不在群體內
# name_list = ['jimmy', 'kevin', 'oscar', 'jerry']
# print('tony' in name_list) # False
# print('tony' not in name_list) # True
# print('j' in name_list) # False 列表最小單位是數據值 不能再細分
# s1 = 'hello world'
# print('d' in s1) # 字串最小單位是單個單個的字元
d1 = {
'username': 'jimmy',
'pwd': 123
}
print('jimmy' in d1) # False 字典成員運算只有鍵參與
print('username' in d1) # True 'username' 'pwd'
EX1:成員運算符
列表
字串
字典
身份運算符
"""
id() 返回一串數字 該數字可以看成是記憶體位址
"""
is 判斷記憶體位址是否相同
== 判斷數據值是否相同
# l1 = [11, 22, 33, 44, 55, 66, 77, 88]
# l2 = [11, 22, 33, 44, 55, 66, 77, 88]
# print(l1 == l2) # True
# print(id(l1))
# print(id(l2))
# print(l1 is l2) # False
# 小整數池
i1 = 11
i2 = 11
print(i1 is i2)
s1 = 'jason jason jason'
s2 = 'jason jason jason'
print(s1 is s2)
不同的環境下可能優化的程度不一樣
"""
了解
值相同 内存地址可能不同
内存地址相同 值肯定相同
"""
EX1:身份運算符
is 判斷記憶體位址是否相同
== 判斷數據值是否相同
EX2:不同的環境下可能優化的程度不一樣
pycharm有額外做優化和解釋器出來結果不一樣
練習題
1.獲取使用者輸入並列印成下列格式
------------ info of Jimmy -----------
Name : Jimmy
Age : 18
Job : Teacher
---------------- end -----------------
# 1.先制定一個列印的範本
info_demo = """
------------ info of %s -------------
Name : %s
Age : %s
Job : %s
---------------- end -----------------
"""
# 2.獲取用戶輸入
username = input('username>>>:')
age = input('age>>>:')
job = input('job>>>:')
# 3.格式化輸出
print(info_demo % (username, username, age, job))
2.下列變數名v綁定的結果
v1 = 1 or 3 # 1
v2 = 1 and 3 # 3
v3 = 0 and 2 and 1 # 0
v4 = 0 and 2 or 1 # 1 沒寫執行順序,是not->and->or
v5 = 0 and 2 or 1 or 4 # 1 沒寫執行順序,是not->and->or
v6 = 0 or False and 1 # False
EX1:1.獲取使用者輸入並列印成下列格式
EX2:2.下列變數名v綁定的結果