注釋
注釋的作用
- 沒有注釋的代碼

- 添加注釋的代碼

- 通過用自己熟悉的語言,在程序中對(duì)某些代碼進(jìn)行標(biāo)注說明,這就是注釋的作用,能夠大大增強(qiáng)程序的可讀性。
注釋的分類及語法
注釋分為兩類:單行注釋 和 多行注釋。
- 單行注釋
只能注釋一行內(nèi)容,語法如下:
## 注釋內(nèi)容
- 多行注釋
可以注釋多行內(nèi)容,一般用在注釋一段代碼的情況, 語法如下:
"""
第一行注釋
第二行注釋
第三行注釋
"""
'''
注釋1
注釋2
注釋3
'''
快捷鍵: ctrl + /
快速體驗(yàn)
- 單行注釋
## 輸出hello world
print('hello world')
print('hello Python') # 輸出(簡單的說明可以放到一行代碼的后面,一般習(xí)慣代碼后面添加兩個(gè)空格再書寫注釋文字)
- 多行注釋
"""
下面三行都是輸出的作用,輸出內(nèi)容分別是:
hello Python
hello itheima
"""
print('hello Python')
print('hello itcast')
print('hello itheima')
'''
下面三行都是輸出的作用,輸出內(nèi)容分別是:
hello Python
hello itheima
'''
print('hello Python')
print('hello itheima')
注意:解釋器不執(zhí)行任何的注釋內(nèi)容。
總結(jié)
- 注釋的作用
用人類熟悉的語言對(duì)代碼進(jìn)行解釋說明,方便后期維護(hù)。
- 注釋的分類
- 單行:
# 注釋內(nèi)容,快捷鍵ctrl+/ - 多行:
""" 注釋內(nèi)容 """或''' 注釋內(nèi)容 '''
- 單行:
- 解釋器不執(zhí)行注釋內(nèi)容
變量
變量的作用

舉例體驗(yàn):我們?nèi)D書館讀書,怎么樣快速找到自己想要的書籍呢?是不是管理員提前將書放到固定位置,并把這個(gè)位置進(jìn)行了編號(hào),我們只需要在圖書館中按照這個(gè)編號(hào)查找指定的位置就能找到想要的書籍。
這個(gè)編號(hào)其實(shí)就是把書籍存放的書架位置起了一個(gè)名字,方便后期查找和使用。
程序中,數(shù)據(jù)都是臨時(shí)存儲(chǔ)在內(nèi)存中,為了更快速的查找或使用這個(gè)數(shù)據(jù),通常我們把這個(gè)數(shù)據(jù)在內(nèi)存中存儲(chǔ)之后定義一個(gè)名稱,這個(gè)名稱就是變量。

變量就是一個(gè)存儲(chǔ)數(shù)據(jù)的的時(shí)候當(dāng)前數(shù)據(jù)所在的內(nèi)存地址的名字而已。
定義變量
變量名 = 值
變量名自定義,要滿足標(biāo)識(shí)符命名規(guī)則。
標(biāo)識(shí)符
標(biāo)識(shí)符命名規(guī)則是Python中定義各種名字的時(shí)候的統(tǒng)一規(guī)范,具體如下:
- 由數(shù)字、字母、下劃線組成
- 不能數(shù)字開頭
- 不能使用內(nèi)置關(guān)鍵字
- 嚴(yán)格區(qū)分大小寫
False None True and as assert break class
continue def del elif else except finally for
from global if import in is lambda nonlocal
not or pass raise return try while with
yield
命名習(xí)慣
- 見名知義。
- 大駝峰:即每個(gè)單詞首字母都大寫,例如:
MyName。 - 小駝峰:第二個(gè)(含)以后的單詞首字母大寫,例如:
myName。 - 下劃線:例如:
my_name。
使用變量
my_name = 'TOM'
print(my_name)
schoolName = '清華'
print(schoolName)
認(rèn)識(shí)bug
所謂bug,就是程序中的錯(cuò)誤。如果程序有錯(cuò)誤,需要程序員排查問題,糾正錯(cuò)誤。

Debug工具
Debug工具是PyCharm IDE中集成的用來調(diào)試程序的工具,在這里程序員可以查看程序的執(zhí)行細(xì)節(jié)和流程或者調(diào)解bug。
Debug工具使用步驟:
- 打斷點(diǎn)
- Debug調(diào)試
打斷點(diǎn)
- 斷點(diǎn)位置
目標(biāo)要調(diào)試的代碼塊的第一行代碼即可,即一個(gè)斷點(diǎn)即可。
- 打斷點(diǎn)的方法
單擊目標(biāo)代碼的行號(hào)右側(cè)空白位置。

Debug調(diào)試
打成功斷點(diǎn)后,在文件內(nèi)部任意位置 — 右鍵 -- Debug'文件名' — 即可調(diào)出Debug工具面板 -- 單擊Step Over/F8,即可按步執(zhí)行代碼。

Debug輸出面板分類
- Debugger
- 顯示變量和變量的細(xì)節(jié)
- Console
- 輸出內(nèi)容
認(rèn)識(shí)數(shù)據(jù)類型
在 Python 里為了應(yīng)對(duì)不同的業(yè)務(wù)需求,也把數(shù)據(jù)分為不同的類型。

檢測(cè)數(shù)據(jù)類型的方法:
type()
a = 1
print(type(a)) # <class 'int'> -- 整型
b = 1.1
print(type(b)) # <class 'float'> -- 浮點(diǎn)型
c = True
print(type(c)) # <class 'bool'> -- 布爾型
d = '12345'
print(type(d)) # <class 'str'> -- 字符串
e = [10, 20, 30]
print(type(e)) # <class 'list'> -- 列表
f = (10, 20, 30)
print(type(f)) # <class 'tuple'> -- 元組
h = {10, 20, 30}
print(type(h)) # <class 'set'> -- 集合
g = {'name': 'TOM', 'age': 20}
print(type(g)) # <class 'dict'> -- 字典
總結(jié)
- 定義變量的語法
變量名 = 值
- 標(biāo)識(shí)符
- 由數(shù)字、字母、下劃線組成
- 不能數(shù)字開頭
- 不能使用內(nèi)置關(guān)鍵字
- 嚴(yán)格區(qū)分大小寫
- 數(shù)據(jù)類型
- 整型:int
- 浮點(diǎn)型:float
- 字符串:str
- 布爾型:bool
- 元組:tuple
- 集合:set
- 字典:dict
輸出
作用:程序輸出內(nèi)容給用戶
print('hello Python')
age = 18
print(age)
格式化輸出
所謂的格式化輸出即按照一定的格式輸出內(nèi)容。
格式化符號(hào)
格式符號(hào) 轉(zhuǎn)換
%s 字符串
%d 有符號(hào)的十進(jìn)制整數(shù)
%f 浮點(diǎn)數(shù)
%c 字符
%u 無符號(hào)十進(jìn)制整數(shù)
%o 八進(jìn)制整數(shù)
%x 十六進(jìn)制整數(shù)(小寫ox)
%X 十六進(jìn)制整數(shù)(大寫OX)
%e 科學(xué)計(jì)數(shù)法(小寫'e')
%E 科學(xué)計(jì)數(shù)法(大寫'E')
%g %f和%e的簡寫
%G %f和%E的簡寫
技巧
%06d,表示輸出的整數(shù)顯示位數(shù),不足以0補(bǔ)全,超出當(dāng)前位數(shù)則原樣輸出
%.2f,表示小數(shù)點(diǎn)后顯示的小數(shù)位數(shù)。
體驗(yàn)
需求:輸出“今年我的年齡是18歲”
格式化字符串除了%s,還可以寫為f'{表達(dá)式}'
age = 18
name = 'TOM'
weight = 75.5
student_id = 1
# 我的名字是TOM
print('我的名字是%s' % name)
# 我的學(xué)號(hào)是0001
print('我的學(xué)號(hào)是%4d' % student_id)
# 我的體重是75.50公斤
print('我的體重是%.2f公斤' % weight)
# 我的名字是TOM,今年18歲了
print('我的名字是%s,今年%d歲了' % (name, age))
# 我的名字是TOM,明年19歲了
print('我的名字是%s,明年%d歲了' % (name, age + 1))
# 我的名字是TOM,明年19歲了
print(f'我的名字是{name}, 明年{age + 1}歲了')
f-格式化字符串是Python3.6中新增的格式化方法,該方法更簡單易讀。
轉(zhuǎn)義字符
\n:換行。
\t:制表符,一個(gè)tab鍵(4個(gè)空格)的距離。
1.4 結(jié)束符
想一想,為什么兩個(gè)print會(huì)換行輸出?
print('輸出的內(nèi)容', end="\n")
在Python中,print(), 默認(rèn)自帶end="\n"這個(gè)換行結(jié)束符,所以導(dǎo)致每兩個(gè)print直接會(huì)換行展示,用戶可以按需求更改結(jié)束符。
總結(jié)
格式化符號(hào)
%s:格式化輸出字符串
%d:格式化輸出整數(shù)
%f:格式化輸出浮點(diǎn)數(shù)
f-字符串
f'{表達(dá)式}'
轉(zhuǎn)義字符
\n:換行
\t:制表符
print結(jié)束符
print('內(nèi)容', end="")
輸入
在Python中,程序接收用戶輸入的數(shù)據(jù)的功能即是輸入。

輸入的語法
input("提示信息")
輸入的特點(diǎn)
- 當(dāng)程序執(zhí)行到
input,等待用戶輸入,輸入完成之后才繼續(xù)向下執(zhí)行。 - 在Python中,
input接收用戶輸入后,一般存儲(chǔ)到變量,方便使用。 - 在Python中,
input會(huì)把接收到的任意用戶輸入的數(shù)據(jù)都當(dāng)做字符串處理。
password = input('請(qǐng)輸入您的密碼:')
print(f'您輸入的密碼是{password}')
# <class 'str'>
print(type(password))
控制臺(tái)輸出結(jié)果如下:

總結(jié)
- 輸入功能
- input('提示文字')
- 輸入的特點(diǎn)
- 一般將input接收的數(shù)據(jù)存儲(chǔ)到變量
- input接收的任何數(shù)據(jù)默認(rèn)都是字符串?dāng)?shù)據(jù)類型
數(shù)據(jù)類型轉(zhuǎn)換
轉(zhuǎn)換數(shù)據(jù)類型的作用
問:input()接收用戶輸入的數(shù)據(jù)都是字符串類型,如果用戶輸入1,想得到整型該如何操作?
答:轉(zhuǎn)換數(shù)據(jù)類型即可,即將字符串類型轉(zhuǎn)換成整型。
轉(zhuǎn)換數(shù)據(jù)類型的函數(shù)
函數(shù) 說明
int(x [,base ]) 將x轉(zhuǎn)換為一個(gè)整數(shù)
float(x ) 將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)
complex(real [,imag ]) 創(chuàng)建一個(gè)復(fù)數(shù),real為實(shí)部,imag為虛部
str(x ) 將對(duì)象 x 轉(zhuǎn)換為字符串
repr(x ) 將對(duì)象 x 轉(zhuǎn)換為表達(dá)式字符串
eval(str ) 用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象
tuple(s ) 將序列 s 轉(zhuǎn)換為一個(gè)元組
list(s ) 將序列 s 轉(zhuǎn)換為一個(gè)列表
chr(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)Unicode字符
ord(x ) 將一個(gè)字符轉(zhuǎn)換為它的ASCII整數(shù)值
hex(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串
oct(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串
bin(x ) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)二進(jìn)制字符串
快速體驗(yàn)
需求:input接收用戶輸入,用戶輸入“1”,將這個(gè)數(shù)據(jù)1轉(zhuǎn)換成整型。
### 接收用戶輸入
num = input('請(qǐng)輸入您的幸運(yùn)數(shù)字:')
### 打印結(jié)果
print(f"您的幸運(yùn)數(shù)字是{num}")
### 檢測(cè)接收到的用戶輸入的數(shù)據(jù)類型 -- str類型
print(type(num))
### 轉(zhuǎn)換數(shù)據(jù)類型為整型 -- int類型
print(type(int(num)))
實(shí)驗(yàn)
### float() -- 轉(zhuǎn)換成浮點(diǎn)型
num1 = 1
print(float(num1))
print(type(float(num1)))
### str() -- 轉(zhuǎn)換成字符串類型
num2 = 10
print(type(str(num2)))
### tuple() -- 將一個(gè)序列轉(zhuǎn)換成元組
list1 = [10, 20, 30]
print(tuple(list1))
print(type(tuple(list1)))
###list() -- 將一個(gè)序列轉(zhuǎn)換成列表
t1 = (100, 200, 300)
print(list(t1))
print(type(list(t1)))
###eval() -- 將字符串中的數(shù)據(jù)轉(zhuǎn)換成Python表達(dá)式原本類型
str1 = '10'
str2 = '[1, 2, 3]'
str3 = '(1000, 2000, 3000)'
print(type(eval(str1)))
print(type(eval(str2)))
print(type(eval(str3)))
#輸出
#<class 'int'>
#<class 'list'>
#<class 'tuple'>
總結(jié)
轉(zhuǎn)換數(shù)據(jù)類型常用的函數(shù)
int()
float()
str()
list()
tuple()
eval()
運(yùn)算符
運(yùn)算符的分類
- 算數(shù)運(yùn)算符
- 賦值運(yùn)算符
- 復(fù)合賦值運(yùn)算符
- 比較運(yùn)算符
- 邏輯運(yùn)算符
算數(shù)運(yùn)算符
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| + | 加 | 1 + 1 輸出結(jié)果為 2 |
| - | 減 | 1-1 輸出結(jié)果為 0 |
| * | 乘 | 2 * 2 輸出結(jié)果為 4 |
| / | 除 | 10 / 2 輸出結(jié)果為 5 |
| // | 整除 | 9 // 4 輸出結(jié)果為2 |
| % | 取余 | 9 % 4 輸出結(jié)果為 1 |
| ** | 指數(shù) | 2 ** 4 輸出結(jié)果為 16,即 2 *2 *2 *2 |
| () | 小括號(hào) | 小括號(hào)用來提高運(yùn)算優(yōu)先級(jí),即 (1 + 2) * 3 輸出結(jié)果為 9 |
注意:
- 混合運(yùn)算優(yōu)先級(jí)順序:
()高于**高于*///%高于+-
賦值運(yùn)算符
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| = | 賦值 | 將=右側(cè)的結(jié)果賦值給等號(hào)左側(cè)的變量 |
- 單個(gè)變量賦值
num = 1
print(num)
- 多個(gè)變量賦值
num1, float1, str1 = 10, 0.5, 'hello world'
print(num1)
print(float1)
print(str1)
結(jié)果如下:

- 多變量賦相同值
a = b = 10
print(a)
print(b)
結(jié)果如下:

復(fù)合賦值運(yùn)算符
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| += | 加法賦值運(yùn)算符 | c += a 等價(jià)于 c = c + a |
| -= | 減法賦值運(yùn)算符 | c -= a 等價(jià)于 c = c- a |
| *= | 乘法賦值運(yùn)算符 | c *= a 等價(jià)于 c = c *a |
| /= | 除法賦值運(yùn)算符 | c /= a 等價(jià)于 c = c / a |
| //= | 整除賦值運(yùn)算符 | c //= a 等價(jià)于 c = c // a |
| %= | 取余賦值運(yùn)算符 | c %= a 等價(jià)于 c = c % a |
| **= | 冪賦值運(yùn)算符 | c **= a 等價(jià)于 c = c **a |
a = 100
a += 1
# 輸出101 a = a + 1,最終a = 100 + 1
print(a)
b = 2
b *= 3
# 輸出6 b = b * 3,最終b = 2 * 3
print(b)
c = 10
c += 1 + 2
# 輸出13, 先算運(yùn)算符右側(cè)1 + 2 = 3, c += 3 , 推導(dǎo)出c = 10 + 3
print(c)
比較運(yùn)算符
比較運(yùn)算符也叫關(guān)系運(yùn)算符, 通常用來判斷。
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| == | 判斷相等。如果兩個(gè)操作數(shù)的結(jié)果相等,則條件結(jié)果為真(True),否則條件結(jié)果為假(False) | 如a=3,b=3,則(a == b) 為 True |
| != | 不等于 。如果兩個(gè)操作數(shù)的結(jié)果不相等,則條件為真(True),否則條件結(jié)果為假(False) | 如a=3,b=3,則(a == b) 為 True如a=1,b=3,則(a != b) 為 True |
| > | 運(yùn)算符左側(cè)操作數(shù)結(jié)果是否大于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 | 如a=7,b=3,則(a > b) 為 True |
| < | 運(yùn)算符左側(cè)操作數(shù)結(jié)果是否小于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 | 如a=7,b=3,則(a < b) 為 False |
| >= | 運(yùn)算符左側(cè)操作數(shù)結(jié)果是否大于等于右側(cè)操作數(shù)結(jié)果,如果大于,則條件為真,否則為假 | 如a=7,b=3,則(a < b) 為 False如a=3,b=3,則(a >= b) 為 True |
| <= | 運(yùn)算符左側(cè)操作數(shù)結(jié)果是否小于等于右側(cè)操作數(shù)結(jié)果,如果小于,則條件為真,否則為假 | 如a=3,b=3,則(a <= b) 為 True |
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True
邏輯運(yùn)算符
| 運(yùn)算符 | 邏輯表達(dá)式 | 描述 | 實(shí)例 |
|---|---|---|---|
| and | x and y | 布爾"與":如果 x 為 False,x and y 返回 False,否則它返回 y 的值。 | True and False, 返回 False。 |
| or | x or y | 布爾"或":如果 x 是 True,它返回 True,否則它返回 y 的值。 | False or True, 返回 True。 |
| not | not x | 布爾"非":如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not True 返回 False, not False 返回 True |
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True
拓展
數(shù)字之間的邏輯運(yùn)算
a = 0
b = 1
c = 2
# and運(yùn)算符,只要有一個(gè)值為0,則結(jié)果為0,否則結(jié)果為最后一個(gè)非0數(shù)字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1
# or運(yùn)算符,只有所有值為0結(jié)果才為0,否則結(jié)果為第一個(gè)非0數(shù)字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1
總結(jié)
- 算數(shù)運(yùn)算的優(yōu)先級(jí)
- 混合運(yùn)算優(yōu)先級(jí)順序:
()高于**高于*///%高于+-
- 混合運(yùn)算優(yōu)先級(jí)順序:
- 賦值運(yùn)算符
- =
- 復(fù)合賦值運(yùn)算符
- +=
- -=
- 優(yōu)先級(jí)
- 先算復(fù)合賦值運(yùn)算符右側(cè)的表達(dá)式
- 再算復(fù)合賦值運(yùn)算的算數(shù)運(yùn)算
- 最后算賦值運(yùn)算
- 比較運(yùn)算符
- 判斷相等: ==
- 大于等于: >=
- 小于等于:<=
- 不等于: !=
- 邏輯運(yùn)算符
- 與: and
- 或:or
- 非:not