1st Python基礎(chǔ)語法

1.1 Python的介紹和安裝
1.1.1 編程語言的分層
機(jī)器語言:直接和硬件打交道,01代碼,控制硬件功能。但對于人太難記憶和理解了。
匯編語言(嵌入式開發(fā)用到):用人熟悉的語言來表示01代碼不出。但是開發(fā)效率不夠高效,比如寫一個Hello world需要十幾行代碼。
高級語言(如C、Java、Python等):對底層硬件的指令做了封裝,可以使調(diào)用功能的代碼大大簡化,提高開發(fā)效率。

1.1.2 安裝
因為自己博客寫過了,這里就給出鏈接就好了。

1.2 變量、常量和注釋
1.2.1 變量
變量使用的規(guī)則:
先定義變量,變量存儲在內(nèi)存里;
后面的代碼來調(diào)用。
?x = 2
?y = 3
?print(x+y) # 輸出5

1.2.2 變量名的定義
變量名只能是字母、數(shù)字或下劃線的任意組合;
變量名的第一個字符不能是數(shù)字;
以下關(guān)鍵字不能聲明為變量名
['and', 'as', 'assert', "break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'globall', 'if', 'import', "in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
;特殊字符不能包含在變量名內(nèi)。

1.2.3 變量名的規(guī)范
變量名違反1.2.2的定義就會報錯,但是變量名還應(yīng)該保持一致的格式,培養(yǎng)良好的編程習(xí)慣。一般有兩種規(guī)范:age_of_person = 23
,NumberOfStudents = 80
。
個人習(xí)慣第一種,也是Python官方的推薦規(guī)范,第二種自己喜歡在Java里面用。
其他規(guī)范還有:
變量名也不應(yīng)該用漢字或者拼音,別人看會比較蠢。。。
變量名也不能太長,也不要詞不達(dá)意,要方便理解

1.2.4 變量的修改
?name = 'zm'
?print(name)
?name = 'new_zm' # 變量的修改
?print(name)

1.2.5 常量
Python沒有常量的語法,所以大家通過全部大寫的變量名來表示常量,方便告訴別的程序員這是一個常量,比如SYSTEM_NAME = 'XXX系統(tǒng)'

1.2.6 注釋
?# 單行注釋 一般#后加一個空格,符合規(guī)范
?"""
?三個雙引號可以
?多行注釋
?Python官方推薦
?"""
?'''
?三個單引號也可以
?多行注釋
?不推薦
?'''
?
?# 注釋的代碼不執(zhí)行

1.3 基本數(shù)據(jù)類型
1.3.1 查看數(shù)據(jù)類型
?# type可以查看數(shù)據(jù)的類型
?name = 'zm'
?age = 18
?print(type(name))
?print(type(age))

1.3.2 字符串和數(shù)字
數(shù)字(int/float)
數(shù)字包括類型有:
int 整數(shù) 最大儲存 262
long 無限大(很多億) Python3里去掉了,所有整數(shù)都按int類型處理
float 浮點數(shù)
復(fù)數(shù)(比較少用,不介紹)
字符串(str)
定義:
有引號的就是字符串。比如name = 'zm'
,這里的name
就是字符串類型的數(shù)據(jù)。Python中單引號雙引號三引號都可以用來表示字符串,其中三引號可以表示多行的字符串,我們放在段落里講(單引號和雙引號可以通過\n
來實現(xiàn))
拼接:
?name1 = 'zm'
?name2 = 'lalala'
?print(name1 + name2) # 實現(xiàn)字符拼接輸出zmlalala
?print(name1*3) # 打印三遍name1
段落:
三引號可以寫多行字符。
?name = '''
?zm
?wzw
?yz
?'''
?print(name) ?# 輸出多行數(shù)據(jù)

1.3.3 布爾(bool)
若a = 3
,b = 5
,則可以得到b > a
。計算機(jī)描述b > a
是通過布爾類型來描述,布爾類型有兩種:True
和False
。比如a = 3; b = 5; print(a<b)
,輸出的結(jié)果就為True
。布爾類型在if
語句中經(jīng)常搭配使用。

1.3.4 列表
列表的作用:一個存多個數(shù)據(jù),而且方便取其中的某個或某些數(shù)據(jù)。
?names = ['zm', 'wzw', 'yz']
?print(type(names)) ?# 輸出list類型
?print(names[0]) ?# 輸出zm
?print(names[2]) ?# 輸出yz
列表里每個數(shù)據(jù)被稱作元素,元素之間以逗號隔開,取值時根據(jù)下標(biāo)取即可。關(guān)于下標(biāo)(又稱索引),就是列表自帶的一個東西,默認(rèn)給每個元素按順序從0開始給下標(biāo)。比如上面的代碼中,'zm'
的下標(biāo)是0,'wzw'
的下標(biāo)是1,以此類推。
列表的增
?# 插入
?names = ['zm', 'wzw', 'yz']
?# names.insert(位置, 插入元素)
?names.insert(1, 'zk') # 插入到位置1,原位置1以及后面的元素向后移
?print(names) # 輸出的是['zm', 'zk', 'wzw', 'yz']?# 追加(插入無法將數(shù)據(jù)放在列表的最后面,append就可以)
?names = ['zm', 'wzw', 'yz']
?names.append('zk') # append只能加在列表的最后面
?print(names) # 輸出['zm', 'wzw', 'yz', 'zk']
列表的刪
?names = ['zm', 'wzw', 'yz']
?# 用正序下標(biāo)定位
?del names[0] # 刪除'zm'
?# 用倒序下標(biāo)定位
?del names[-1] # 刪除'yz'
?
?print(names) # 輸出['wzw']
列表的改
?names = ['zm', 'wzw', 'yz']
?names[0] = '朱明' # 將'zm'元素改成'朱明'
?print(names) # 輸出['朱明', 'wzw', 'yz']
列表的查
?names = ['zm', 'wzw', 'yz']
?# 單純的看該元素在不在列表中
?print('zm' in names)
?
?# 查元素的下標(biāo)
?print(names.index('zm')) # 返回'zm'的下標(biāo),即0
?# PS:若查詢的列表中沒有查詢的元素就會報錯,顯示該元素'is not in list'
命令嵌套
多種命令搭配,比如刪除zm
元素。
?names = ['zm', 'wzw', 'yz']
?del names[names.index('wzw')] # 刪除元素zm
P.S. 這種刪除方法不推薦!只是演示有這種方法而已。
還有很多其他數(shù)據(jù)類型,這里者介紹數(shù)字、字符串和列表三種,其他數(shù)據(jù)類型(字典dict
、集合set
、元組tuple
等)之后再慢慢介紹到。

1.4 讀取輸入用戶指令
Python終端中進(jìn)行交互的一個方法。
?# 用戶輸入,不輸入程序不會執(zhí)行下面的語句
?name = input('please input your name:')
?
?print(name) # 輸出用戶輸入的數(shù)據(jù)
需要注意的點:
input()
獲得的數(shù)據(jù)皆為字符串str
類型;多個數(shù)據(jù)輸入時,使用多條input語句就好。

1.5 格式化輸出
?name = 'zm'
?print('My name is %s' % name)
?print('My name is ', name)
?print(f'My name is {name}')
?print('My name is {}'.format(name))
關(guān)于格式化輸出的一些說明:
以上的方法建議使用第一種和第三種,個人喜歡第三種,方便。
還可以多行輸出的格式化,可以自行試試。
對于第一種方法,
%s
表示字符串,%d
表示整形數(shù)字,%f
表示浮點數(shù),其他的可以自行百度查詢。

1.6 運(yùn)算符
1.6.1 算術(shù)運(yùn)算
+
:加號,比如1+2=3
-
:減號,比如2-2=0
*
:乘號,比如2*2=4
/
:除號,比如2/1=2
%
:取余,比如7%3=1
**
:冪運(yùn)算,比如2**3=8
//
:取整除,比如7%3=2

1.6.2 比較運(yùn)算
==
:等于!=
:不等于<
:小于>
:大于>=
:大于等于<=
:小于等于

1.6.3 賦值運(yùn)算
=
:單純的賦值+=
:比如c+=a
等價于c = c + a
-=
:同+=
*=
:同+=
%=
:同+=
/=
:同+=
**=
:同+=
//=
:同+=

1.6.4 邏輯運(yùn)算
and
:多個條件都為真就返回真,有一個假就返回假or
:多個條件有一個為真就返回真,全都為假就返回假not
:取反

1.6.5 身份運(yùn)算
is
:類似于==
;但是,is
比較的是兩個數(shù)據(jù)的id
,即兩個指針是否指向一個值,==
只判斷值是否相等。?# -*- encoding: utf-8 -*-
?a = 10
?b = 10
?
?print(id(a))
?print(id(b))
?
?if a is b:
? ? ?print('is OK') # 輸出這個
?else:
? ? ?print('is NO')
?
?if a == b:
? ? ?print('== OK') # 輸出這個
?else:
? ? ?print('== NO')

1.7 流程控制之if..else
1.7.1 為何要縮進(jìn)
C和Java中用{}
來進(jìn)行代碼分級,Python中采用縮進(jìn)來進(jìn)行代碼分級,一般四個空格為一個縮進(jìn),也可以兩個空格,沒有嚴(yán)格要求,只是需要保持代碼中的縮進(jìn)保持一致即可,否則會報錯。

1.7.2 單分支
?weather = 'rain' # 程序輸出:帶傘和出門
?# weather = 'sun' # 程序輸出:出門
?
?if weather == 'rain':
? ? ?print('帶傘')
?
?print('出門')

1.7.3 雙分支
?age = 18 # 修改age,大于等于18和其他數(shù)值會產(chǎn)生不同輸出結(jié)果
?if age>=18:
? ? ?print('be allowed in')
?else:
? ? ?print('not be allowed in')

1.7.4 多分支
?age = 18
?if 18 <= age < 30:
? ? ?print('可以工作')
?elif age >= 30:
? ? ?print('退休了')
?else:
? ? ?print('年齡沒有達(dá)到要求')
?# 也可以多個elif,else不是必須要有的

1.8 小程序
需求:ABCDE五個分?jǐn)?shù)等級,對應(yīng)關(guān)系是:
A:90-100;B:80-89;C:60-79;D:40-59;E:0-39。
示例代碼:
score = int(input('please input your score:'))
?
?if 0 <= score <= 39:
? ? ?print('E')
?elif 40 <= score <= 59:
? ? ?print('D')
?elif 60 <= score <= 79:
? ? ?print('C')
?elif 80 <= score <= 89:
? ? ?print('B')
?elif 90 <= score <= 100:
? ? ?print('A')
?else:
? ? ?print('請輸入0-100的數(shù)字')

1.9 猜隨機(jī)數(shù)
?import random
?
?number = random.randint(0, 100)
?
?while True:
? ? ?input_number = int(input('input your guess number:'))
? ? ?if input_number == number:
? ? ? ? ?print('bingo!')
? ? ? ? ?break # 終止循環(huán)
? ? ?elif input_number < number:
? ? ? ? ?print('猜小了')
? ? ?elif input_number > number:
? ? ? ? ?print('猜大了')

1.10 流程控制之while循環(huán)
?while True:
? ? ?print('循環(huán)執(zhí)行')
?# P.S. 這段代碼是死循環(huán),注意要手動停止!
?# while后面的條件如果是True,那么循環(huán)就不斷執(zhí)行,直到后面的條件為False

1.10.1 break和continue
break:終止循環(huán)
continue:結(jié)束本次循環(huán)
?max_num = 10
?count = 1
?while True:
? ? ?if count > 10:
? ? ? ? ?break
?
? ? ?if count % 2 == 0:
? ? ? ? ?if count % 4 == 0:
? ? ? ? ? ? ?count += 1
? ? ? ? ? ? ?continue
? ? ? ? ?print(count)
?
? ? ?count += 1

1.10.2 死循環(huán)
保持while
后面的條件一直保持True
就會一直死循環(huán)下去,不會中斷。

# 從1加到100
# -*- encoding: utf-8 -*-
?# 方法1
?s = 0
?for i in range(1, 101): # range()后面會講到
? ? ?s += i
?print(s)
?
?# 方法2
?print(sum(range(1, 101)))

1.10.4 打印0到100的偶數(shù)
?max_num = 100
?count = 1
?while True:
? ? ?if count > max_num:
? ? ? ? ?break
?
? ? ?if count % 2 == 0:
? ? ? ? ?print(count)
?
? ? ?count += 1

末
因為小破站上的文本格式對演示代碼極其不友好,而且自己平時的筆記是通過Markdown語法來記錄的,在格式上和美觀程度上不是很好看,如果你看的不習(xí)慣,就去下載一個Typora(或者支持markdown語法的應(yīng)用),我這里給出md文件的迅雷網(wǎng)盤鏈接(百度網(wǎng)盤上傳不了),然后用Typora打開文件看就好了。
鏈接:https://pan.xunlei.com/s/VMQH_VtuXxJaZePoGyJxTkDUA1
提取碼:ppx5