一.python的編碼規範
1.分號:不要在行尾加分號,也不要使用分號將兩條命令放在同一行
2.行長度:一般情況下每行不要超過80個字符
3.括號:寧缺毋濫的使用括號
4.縮進:使用4個空格來縮進代碼
5.空行:頂級定義之間空兩行,方法定義之間空一行
6.語句:通過每個語句應該獨佔一行
7.儘量避免文件名中出現空格和中文
二、python的基本語法
python的語法比較簡單,採用縮進的方式,寫出的代碼大概是這樣的:
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
其中#開頭的語句是註釋,註釋是給編程人員看的,解釋器會忽略掉註釋。其他每一行就是一個語句,當語句以:冒號結尾是,縮進的語句爲代碼塊。
按照約定始終使用4個空格的縮進(不管是空格或是Tab鍵都可以),在文本編輯器中,設置把Tab自動轉成4個空格即可
注意:Python程序是大小寫敏感的
三、標識符
什麼是標識符?說白了它就是一個字符串
標識符規則:
1.只能由字母、數字、下劃線組成
2.開頭不能是數字
3.不能是python的關鍵字
例如:def False True and break class del 等等
4.區分大小寫
5.取名字要做到見名知義
作用:
給變量、函數 , 類等命名
四、python數據類型和變量
(一)數據類型
爲什麼會有不同的數據類型
計算機是用來做數學計算的機器,因此它可以處理各種數值,但是計算機能夠處理的遠遠不止是數值,它還可以處理文本、圖形、音頻、視頻等各種各樣的數據,不同的數據要定義不同的數據類型。
python的數據類型分爲幾種?
1.Number(數字)
a.整數 :python可以處理任意大小的整數,當然包括負整數,在程序的表示方法和數學上的寫法是一模一樣的,例如:1, 100, -10等 b.浮點數:浮點數又稱小數,之所以稱之爲浮點數,是因爲按照科學計數法表示的的時候,一個浮點數的位置是可變的,比如1.23x10^5 與 12.3x10^4是相等的。[在python中浮點數的表示會有一定的誤差,這個誤差的原因是實數的無限精度跟計算機的有限內存之間的矛盾] 注意:整數與浮點數在計算機內存的存儲方式不同,整數運輸是精確的,而浮點數運算則可能會有四捨五入的誤差。 c.複數:複數由實數部分和虛數部分組成,可以用a+bj或者complex(a,b)的形式表示,複數的實部a和虛部b都是浮點型。
2.String(字符串)
字符串是以單引號或雙引號括起來的任意文本,比如“abc”,‘xy’等等,請注意‘’或者“”本身只是一種表示方式,並不是字符串的一部分。
a.若字符串內部包含單引號又包含雙引號怎麼辦?
print('I\'m \"ok\"')
表示的字符串內容是:
I'm "ok"
注意:轉義字符\可以轉義很多字符,比如\n表示換行,\t表示製表符,字符\本身也需要轉義,所以\\表示的字符就是\等等
>>>print('I\'m ok.')
I'm ok.
>>>print('I\'m learning\n python.')
I'm leanring
Python.
>>> print('\\\n\\')
\
\
但是,如果字符串裏面很多字符串需要轉義,就需要添加很多,爲了簡化,python還允許用r”“表示內部的字符串默認不轉義。
>>> print('\\\t\\')
\ \
>>>print(r'\\\t\\')
\\\t\\
如果字符串內部很多換行,用\n寫在一行裏不好閱讀,爲了簡化,python允許用”’…”’的格式表示多行內容:
>>> print('''line1
line2
line3''')
line1
line2
line3
3.Boolean(布爾值)
布爾值只有True、False兩種值,在python中可以直接用True、False表示布爾值【注意大小寫】,也可以通過布爾運算計算出來:
>>> True
True
>>> 3 > 2
True
4.None(空值)
空值是python裏一個特殊的值,用None表示,None不能爲0,而None是一個特殊的空值。
5.list(列表)
Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素
>>> list1 = ["張三", "王二", "李四"]
>>> type(list1)
<class 'list'>
6.tuple(元組)
另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改
>>> tuple1 = ("張三", "王二", "李四")
>>> type(tuple1)
<class 'tuple'>
7.dict(字典)
Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度。
>>> dict1 = {'lisi': 89, 'lili':90}
>>> type(dict1)
<class 'dict'>
8.set(集合)
set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。
>>> set1 = {"lisi", "wanger"}
>>> type(set1)
<class 'set'>
(二)變量
變量的概念基本上和初中代數的方程變量是一致的,只是在計算機程序中,變量不僅可以是數字,還可以是任意數據類型。
1.概述:程序可操作的存儲區的名稱,在運行的期間能夠改變的數據,每個變量都是特定的類型
作用:將不同類型的數據存儲到內存中
2.變量的定義:
變量名=初始值
age = 18
注:給定初始值的原因是因爲確定變量的類型
age = 18
print('age =', age)
#查看變量的類型
print(type(age))
#查看變量的地址
print(id(age))
3.刪除變量:
del 變量名
注意:刪除後的變量無法引用
age = 18
#刪除age變量
del age
#打印age的值
print('age =', age)
注意:在Python中,等號=是賦值符號,可以把任意數據類型賦值給變量,同一個變量也可以反覆賦值,而且可以是不同類型的變量。像這種本身類型不固定的語言被稱爲動態語言。
當然你也可以這麼理解,變量的類型取決於被賦的值的類型。
a = 123 #a是整數
print(a)
print(type(a))
a = 'abc' #a變爲字符串
print(a)
print(type(a))
(三)常量:
程序運行期間不能改變的數據
#常見的常量
123
'abc'
五、Number(數字)
1.數字類型之間的轉換
> int(x) :將x轉換爲一個整數
> float(x) :將x轉換爲一個浮點數
#浮點數轉爲int
print(int(1.9))
# int轉爲浮點數
print(float(1))
#字符串轉爲int
print(int('123'))
#字符串轉爲float
print(float('12.3'))
#注意:如果有其他無用字符會報錯,比如:
print(int('abc'))
#只有正負號纔有意義
print(int('+123'))
print(int('-123'))
2.數學函數
abs(x):返回數字的絕對值
(x > y)-(x < y) :比較大小,取值爲正x>y ,取值爲負x
#返回數字的絕對值
num1 = -10
num2 = abs(num1)
print(num2)
#比較兩個數的大小
num3 = 100
num4 = 8
print((num3 > num4)-(num3 < num4))
#返回給定參數的最大值
print(max(1, 2, 3, 45, 34, 12))
#返回給定參數的最小值
print(min(1,2,3,5,4))
#求x的y次方 2^5
print(pow(2, 5))
#round(x[,n])返回浮點數x的四捨五入的值,如果給出n值,則代表舍入到小數點後n位
#默認保留整數
print(round(2.1234))
print(round(2.13334, 3))
3.math模塊的使用
導入math模塊
math.ceil(x):返回x的向上取整數值
math.floor(x):返回x的向下取整的數值
math.modf(x):返回x的整數部分和小數部分,兩部分的數值符號與x相同,整數部分以浮點數表示。
math.sqrt(x):反回數字的x的開平方根,返回類型爲實數【浮點型】
import math
#向上取整
print(math.ceil(18.1))
print(math.ceil(18.8))
#向下取整
print(math.floor(18.1))
print(math.floor(18.9))
#返回整數部分與小數部分
print(math.modf(22.123))
#開方
print(math.sqrt(16))
4.隨機數函數
導入random模塊
random.choice([1,2,3,4]) :隨機返回一個元素【從指定序列中挑選一個元素】
random.randrange(n):從0~n-1之間選擇一個隨機數
random.random() :隨機產生[0,1)之間的數,結果爲浮點數
l1 = [1, 2, 4, 5]
random.shuffle(l1) :將序列中的所有元素進行隨機排列
random.uniform(m, n) :隨機產生一個[m, n]之間的浮點數
import random
nums = range(10)
# range([start,] stop[, step])
# range()函數返回一個可迭代對象
# start:計數從start開始,默認從0開始
# stop:計數到stop結束,但不包括stop
# step: 步長,默認爲1
list(nums)
# 使用list可以把可迭代對象轉爲一個列表,返回的類型爲列表
#隨機數
print(random.choice([1,3,4,5]))
print(random.choice(range(5)))
print(random.choice("hello"))
#產生一個1~100之間的隨機數
r1 = random.choice(range(100))+1
print(r1)
#從指定範圍內,按指定的基數遞增的集合中選取一個隨機數
#random.randrange([start,]stop[, step])
#start:指定範圍的開始值,包含在範圍內,默認是0
#stop:指定範圍結束值,不包含在範圍內
#step:指定的遞增基數,默認是1
print(random.randrang(1, 100, 2))
#從0~99選取一個隨機數
print(random.randrang(100))
#隨機產生[0,1)之間的數(浮點數)
print(random.random())
#隨機產生一個實數,在[3,9]範圍內
print(random.uniform(3, 9))
list = [1, 2, 3, 23, 21]
#將序列的所有元素隨機排序
random.shuffle(list)
print(list)
5.三角函數
需要導入math模塊
六、算術運算符與表達式
算術運算符
假設變量 a = 10, b = 20
+ :加 兩個對象相加 例如 a + b = 30
- :減 標識負數/一個數減去另一個數 a - b = -10
* :乘 兩個數相乘/返回一個被重複若干次的字符串 a*b=200
/ : 除 b除以a b/a = 2
% : 取模 返回除法的餘數 b%a = 0
** :冪,返回x的y次冪 a**b=10^20
// : 取整除返回商的整數部分 9//2=4, 9.0//2.0=4.0
算術運算表達式
3+2 3-1 8**9 5%3
功能:進行相關符號的數學運算,不會改變變量的值
值:相關的數學運算的結果
七、比較運算符
== 等於,比較對象是否相等,返回布爾類型的值
>>> a = 10
>>> b = 20
>>> print(a == b)
False
!= 不等於,比較對象是否不相等
>>> a = 10
>>> b = 20
>>> print(a != b)
True
大於,x > y,返回x是否大於y
>>> a = 10
>>> b = 20
>>> print(a > b)
False
< 小於,x < y,返回x是否小於y
>>> a = 10
>>> b = 20
>>> print(a < b)
True
‘>=’ 大於等於,x >= y,返回x是否大於等於y
>>> a = 10
>>> b = 20
>>> print(a >= b)
False
<= 小於等於,x <= y,返回x是否小於等於y
>>> a = 10
>>> b = 20
>>> print(a <= b)
True
八、賦值運算符與賦值運算表達式
賦值運算符 =
賦值運算表達式
格式:變量 = 表達式功能:計算了等號右側的“表達式”的值,並賦值給等號左側的變量
值:賦值結束之後的變量
num1 = 10
num2 = num1 + 2
複合運算符
+= 加法賦值運算符 a += b a = a + b
-= 減法賦值運算符 a -= b a = a - b
*= 乘法賦值運算符 a *= b a = a * b
/= 除法賦值運算符 a /= b a = a / b
%= 取模賦值運算符 a %= b a = a % b
**= 冪賦值運算符 a **= b a = a ** b
//= 取整除賦值運算符 a //= b a = a // b
九、邏輯運算符
and運算是與運算,只有所有都爲True,and運算的結果纔是True:
>>> True and True
True
>>> True and False
False
>>> 5>3 and 3>1
True
or運算是或運算,只要其中一個爲True,or運算結果就是True
>>>True or True
True
>>>True or False
True
>>>False or False
False
not 運算是非運算,它是一個單目運算符,把True變成False,False變成True
>>> not True
False
>>> not False
True
>>> not 1>2
True
短路原則
表達式1 and 表達式2 and 表達式3 … 如果表達式1爲假,則整個表達式的值爲假,後面的表達式則沒有計算的必要
表達式1 or 表達式2 or 表達式3 … 如果表達式1爲真,則整個表達式的值爲真,後面的表達式的值就沒有計算的必要
十、位運算符
我們進行位運算的時候,我們需要把數字轉換爲二進制數來進行計算
& 按位與
| 按位或
^ 按位異或
~ 按位取反
<< 左移
>> 右移
1.與運算【&】
參與運算的兩個值,如果兩個相應位都爲1,則該位的結果爲1,否則爲0
3 & 2 = 2
0 1 1
0 1 0
------
0 1 0
2.按位或【|】
只要對應的兩個二進位有一個爲1時,結果位就爲1
3 | 2 = 3
0 1 1
0 1 0
-----
0 1 1
3.按位異或【^】
當兩對應的二進位相異時,結果爲1
3 ^ 2 = 1
0 1 1
0 1 0
-----
0 0 1
4.按位取反【~】
對數據的每個二進制位取反,即把1變爲0,把0變爲1
~3 = 4
0 1 1
-----
1 0 0
5.左移運算符【<<】
運算數的各二進位全部左移若干位,由”<<”右邊的數指定移動的位數,低位補0
注意:向左移動,右邊空出來的補0,左移其實就是乘以2的位數次冪
3 << 2 = 12 = 3 * 2^2
0 1 1
------
0 1 1 0 0
6.右移運算符【>>】
把”>>”左邊的運算數的各二進位全部右移若干位,”>>”右邊的數指定移動的位數
注意:如果最高位0,右移後,用0補空位,如果最高位1,右移後,用1補空位,右移其實就是除以2的位數次冪。
3 >> 2 = 0 = 3/(2^2)
0 1 1
-----
0 0 0 1 1
-4 >> 2 = -1
1 0 0 0 0 1 0 0
----------------
1 0 0 0 0 0 0 1 0 0
十、成員運算符
in:如果在指定的序列中找到返回值True,否則返回False
>>>a = 10
>>>list1 = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a in list1)
False
>>>print(a in list2)
True
not in:如果在指定的序列中沒有找到值返回True,否則返回False
>>>a = 10
>>>list = [1, 2, 4, 5]
>>>list2 =[20, 10, 15]
>>>print(a not in list)
True
>>>print(a not in list2)
False
十一、身份運算符【先不講】
is:is判斷兩個標識符是不是引用自一個對象
>>> a = 1000
>>> b = a
>>> print( a is b)
True
is not:判斷兩個標識符是不是引用自不同的對象
>>>a =1000
>>>b = 1000
>>>print(a is not b)
False
注意:在[-5, 257)的整數取值範圍內,python的內部具有緩存機制,因此在比較這個數值以內的數據可能就會有些問題。
拓展
1.字符串和數值類型可以直接輸出
>>>print(1)
1
>>>print("hello world")
hello world
2.變量,無論是什麼類型,數值,布爾,列表。字典都可以直接輸出
>>> x=12
>>>print(x)
12
>>> list1 = [1, 2, 3]
>>> print(list1)
[1, 2, 3]
3.格式化輸出
>>> s = 'hello'
>>> s
'hello'
>>> x = len(s)
>>> print("the length of %s is %d"%(s,x))
the length of hello is 5
注意,格式化輸出的時候,
1.%字符:標記轉換說明符的開始;
2.如果只有一個參數可以加括號也可以不加
3.根據類型不同使用的格式化符號也不同,
%d 整數 %f浮點型 %s 字符串
十二、分支語句
計算機之所以能夠自動化執行任務,是因爲它自己可以做條件判斷。
思考1:現有一需求,比如,輸入用戶年齡,如果小於18,則打印”未成年人禁止進入“
![370AA951-25BC-4374-B07E-4D6BA76BC694](/Users/zhangjiao/Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/Users/1838887021/QQ/Temp.db/370AA951-25BC-4374-B07E-4D6BA76BC694.png)
if 判斷條件:
執行語句...
if語句的判斷條件可以用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來表示關係。
需求2:如果年齡小於18,則打印”未成年人禁止進入“,否則打印”歡迎光臨!“
if 判斷條件:
執行語句...
else:
執行語句...
分析:判斷條件:年齡小於18, 如果成立,則執行”未成年人禁止進入“,若不成立,則執行”歡迎光臨!“
age = 17
if age < 18:
print("未成年人禁止進入")
else:
print("歡迎光臨!")
拓展:
#可以使用ord 和chr兩個內置函數用於字符與ASCII碼之間的轉換
>>> ord('a')
97
>>> chr(97)
a