一. 變量
定義:變量就是在程序中用來保存數據的容器
1.聲明變量(定義變量) - 假的聲明
語法:
變量名 = 值
說明:
變量名 - 要求:標識符,不能是關鍵字
規(guī)范:a.遵守PEP8命名規(guī)范(名字的所有字母都小寫,如果由多個單詞組成,單詞之間用_隔開)
b.見名知義(看到名字就知道變量中存的是什么數據)
c.= ---- 賦值符號,將=右邊的值賦給左邊的變量
d.值 - 可以是任何有結果的表達式,例如:190, 變量, 10+20, 調用函數表達式
注意:(使用變量的時候,就是在使用變量中保存的值)
例如:
age = 18
name = '小明'
number = 2910
print(age)
變量必須先聲明(賦值)再使用
- Python數據中的存儲,給變量賦值的時候,如果數據類型是數字或者字符串,不是直接開辟空間,而是在現有的數字字符串查看是否已經存儲過對應的數據,直接將之前的數據對應的地址賦值給變量,如果沒有存儲,才會直接開辟空間存儲數據。
- 其他類型的數據都是直接開辟空間存儲數據,然后把數據返回。
- 容器類型中的元素,在容器中不是直接存的值,而是該元素對應的地址
例如:
print(age1) # NameError: name 'age1' is not defined
同時聲明多個變量,并且賦一樣的值。(同時給多個變量賦值)用等號相連。
num1 = num2 = num3 = 10
print(num1, num2, num3)
同時聲明多個變量,并且賦不通的值。 (注意:變量的個數和值的個數要保持一致)用逗號隔開。
x, y, z = 10, 20, 12.4
print(x, y, z)
num4 = 100
num4 = 200
print(num4) --> 200
- 注意: 給同一個變量賦值,后賦的值會覆蓋先賦的值
num4 = 'abc'
num4 = [1, 2, 3]
num4 = {'a': 100}
print(num4) ---{'a': 100}
注意: 同一個變量可以存儲不同類型的值
2.聲明變量和給變量賦值的本質
結論:python所有的變量,存的都是數據在內存中的地址。內存地址的大小一樣
用一個變量給另外一個變量賦值,實質是將變量中的地址賦給另外一個變量.
使用變量的時候,是使用的變量中地址對應的值.
C 中聲明變量:(先要定性)
int num = 10
num = 100
python中聲明變量:沒有限制
num = 10
num = 'asdfhaskhfjkh'
num = 2934789327495732987593745973298457893
print(num)
3.變量的三要素:值、地址和類型
值:變量中存的地址對應的值
地址:變量中存儲的地址 (id)
類型:變量中存的地址對應的值的類型
例:
name1 = '小明'
name2 = name1
print(name1) # 使用變量拿到變量中地址對應的值
print(id(name1), id(name2)) # id(變量) - 獲取變量中存儲的地址
print(type(name1))
二 運算符
python中的運算符:數學運算符;比較運算符;邏輯運算符;賦值運算符;位運算符
1.數學運算符:+,-,*,/, %, //, **
+: 加法運算,-:減法運算,*:乘法運算,/:除法運算, %:取余(求余數), //:整除, *:冪運算
+,-,,/和數學中的+,-,x,÷ 對應的功能一模一樣
print(10+20)
print(10-20)
print(10*20)
print(10/20)
a.% - 取余
應用1:獲取一個整數的最低的一位或者幾位的值 num%(10^n)
應用2:判斷一個是是否能夠被另外一個數整除 num1 % num2
print(10 % 3)
print(10 % 2)
例: 獲取一個數的個數
num = 36523
print(num % 10) # 3
print(num % 100) # 23
b. // - 除法運算,求商,獲取商的整數部分
print(5//2) # 2
print(3.9 // 3) # 1.0
num = 289
print(num//100) # 取num的百位上的值
c. ** - 冪運算
x ** y - 求x的y次方
print(210) # 2的10次方
print(90.5) # 9開平方
print(8**(1/3)) # 8開3次方
2.比較運算符:>, <, ==, !=, >=, <=
所有的比較運算符的運算結果都是布爾值
例1:
值1 > 值2 : 值1是否大于值2
print(100 > 10) # True
print(10 > 100) # False
print(10 > 10) # False
例2:
值1 < 值2: 值1是否小于值2
print(100 < 10) # False
例3:
值1==值2: 值1是否等于值2
print(10 == 100) # False
print(10 == 10) # True
num = 10
print(num == 10) # True
例4:
值1!=值2: 值1是否不等于值2
print(10!=100) # True
print(10!=10) # False
3.邏輯運算符: and, or, not
邏輯運算符的運算對象是布爾值,運算結果也是布爾值
a. and(邏輯與運算):
值1 and 值2:如果值1和值2的都為True,結果才是True;只要有一個False結果就是False
例1:
True and True -> True
True and False -> False
False and True -> False
False and False -> False
注: 邏輯與運算相當于生活中的'并且';當需要多個條件同時滿足,就使用and將多個條件連接在一起
grade = 90 # 成績
score = 98 # 分數
例:要求成績大于90并且表現分大于95,才能獲得獎學金
print('是否獲取獎學金:', grade > 90 and score > 95)
b.or(邏輯或運算)
值1 or 值2:如果值1和值2中有一個是True,就過就是True。兩個都是False,即如果才是False
例:
True or True -> True
True or False -> True
False or True -> True
False or False -> False
邏輯或運算,相當于生活中的'或者';當需要多個條件中至少有一個條件滿足,就是用or將多個條件連接在一起
grade = 90 # 成績
score = 98 # 分數
例子:要求成績大于90或者表現分大于95,就能獲得獎學金
print(grade > 90 or score > 95)
c.not(邏輯非運算)
not 值:如果值是True,結果就是False;如果值是False,結果就是True
not True -> False
not False -> True
not用來對某個條件進行否定
age = 17
是否能夠進入網吧的條件: 年齡不小于18
print('是否能進入網吧:', not age < 18)
print('是否能進入網吧:', age >= 18)
四 賦值和位運算
1.賦值運算符:=,+=, -=, *=, /=, %=, //=, **=
所有賦值符的左邊必須是變量; 組合的賦值運算符的左邊的變量必須已經賦值;
所有賦值運算符最終的會進行賦值操作
a. = - 直接將右邊的結果賦給左邊的變量
num = 100
b. +=, -=, *=, /=, %=, //=, **=
變量 += 值 --> 相當于 變量 = 變量 + 值
變量 -= 值 --> 相當于 變量 = 變量 - 值
變量 *= 值 --> 相當于 變量 = 變量 * 值
num1 = 1
num1 += 10 # num1 = num1+10 = 1+10
print(num1)
num1 = 2 # num1 = num12 = 11*2
print(num1)
num1 %= 2
print(num1)
3.運算符的優(yōu)先級
數學運算符 > 比較運算符 > 邏輯運算符 > 賦值運算符
優(yōu)先級高的先算。如果有括號,先算括號里面的
數學運算符中: ** > *, /, %, // > +, -
num = 10 + 20 > 25 and True < 2
num = 30 > 25 and True < 2
num = True and True
num = True
print(num)
num = 10 + (20 > 25 and True < 2)
num = 10 + (False and True < 2)
num = 10 + False
num = 10
print(num)
num = 10 + 2 * 3 ** 2
print(num)
4.位運算:&(按位與),|(按位或),^(按位異或), ~(按位取反),<<(左移), >>(右移)
位運算是針對二進制中每一位進行的相關操作
a. 數字1 & 數字2 -> 二進制的每一位進行與運算,運算的時候如果都為1結果就是1,否則就是0
1 & 1 - 1
1 & 0 - 0
0 & 1 - 0
0 & 0 - 0
與的特點:一位上的數如果和1與,就會保留這一位上的數。如果和0與,就會將這一位置0
11010 & 00111 = 00010
與運算的應用:判斷一個數的奇偶性(最優(yōu)解答)
將數字和1與,如果結果是0,就說明這個數是偶數;如果結果是1,說明這個數是奇數
3(原/補) = 0011
2(原/補) = 0010
3 & 2 = 0011 & 0010 = 0010(補)
-2 = 1010(原) = 1101(反) = 1110(補)
3 & -2 = 0011 & 1110 = 0010(補)
print(3 & 2)
print(3 & -2)
print(5 & 1, 111 & 1, 123 & 1) # 1 1 1
print(100 & 1, 12 & 1, 67238 & 1) # 0 0 0
b.數字1 | 數字2 - 如果有一位是1結果就是1,兩個都為0結果才是0
1 | 1 - 1
1 | 0 - 1
0 | 1 - 1
0 | 0 - 0
1101 | 1010 - 1111
3 | 20
000011 | 010100 = 010111(補)
-3 | 20
111101(補) | 010100 = 111101(補)
print(3 | 20)
print(-3 | 20)
c.按位取反
~ 數字 - 將每一位取反(0變成1,1變成0)
~1 = 0
~0 = 1
~2
010 -> 101(補) = 100(反) = 111
print(~2)
d.按位異或
數字1 ^ 數字2 - 每一位如果相同就為0,不同為1
1 ^ 1 - 0
1 ^ 0 - 1
0 ^ 1 - 1
0 ^ 0 - 0
11 ^ 2
01011 ^ 00010 = 01001(補)
print(11 ^ 2)
num = 10
print(num ^ 10)
e.左移
數字1 << n(位數) - 左移指定的位數就是在二進制的后面加指定個數個0
相當于:數字1 * (2**n)
10 << 1
01010 << 1 = 010100 = 20
01010 << 2 = 0101000 = 2^5 + 2^3 = 32 + 8 = 40
-10 << 1
11010 -> 10110(補碼) << 1 = 101100(補)= 101011(反)=110100 = -20
print(10 << 1)
print(10 << 2)
print(-10 << 1)
f.右移
數字1 >> n(位數) 將數字的二進制位向右移動指定的位數(將低位刪除指定的位數)
相當于: 數字1 // (2**n)
20
010100 >> 2 = 0101 = 5
0101 >> 1 = 010 = 2
010 >> 1 = 01 = 1
01 >> 1 = 0 = 0
print(-20 >> 2)
字符串
1.什么是字符串(str)
字符串是python中一種常用的有序但是不可變的容器類的數據類型,可以同時存儲多個字符。屬于序列
字面量:使用單引號或者雙引號將任意字符括起來,就是字符串常量
'hjh是否就是23as+-', "是89===——238jsNM是"
字符:指的就是字符串中的每一個單元。注意,python中只有字符的概念沒有字符類型
num = 10
2.字符串中的內容
a.普通字符:包含數字字符、字母、普通符號:+,-(),%#@等、中文、韓文、日語等
'123', 'hsja', '*&sd23順'
b.轉義字符:通過反斜杠將一些字符轉換成有特殊功能或者特殊意義的字符
\n - 換行
\t - 制表符
' - 表示一個單引號
" - 表示一個雙引號
\ - 表示一個\
注意:一個轉義字符代表一個字符
c.阻止轉義: 在字符串的最前面加r/R,可以阻止轉義字符轉義
print('\tabc\n123')
print('abc'123')
print("ab"c'123")
print('abc\n123')
print(r'abc\n12\3')
print(r'\b')