001講
0. Python 是什么型別的語言?
Python是腳本語言
以簡單的方式快速完成某些復雜的事情通常是創造腳本語言的重要原則,
特性:
- 語法和結構通常比較簡單
- 學習和使用通常比較簡單
- 通常以容易修改程式的“解釋”作為運行方式,而不需要“編譯”
- 程式的開發產能優于運行性能
一個腳本可以使得本來要用鍵盤進行的相互式操作自動化,一個Shell腳本主要由原本需要在命令列輸入的命令組成,或在一個文本編輯器中,用戶可以使用腳本來把一些常用的操作組合成一組串行,主要用來書寫這種腳本的語言叫做腳本語言,很多腳本語言實際上已經超過簡單的用戶命令串行的指令,還可以撰寫更復雜的程式,
1. IDLE 是什么?
IDLE是一個Python Shell,shell的意思就是“外殼”,基本上來說,就是一個通過鍵入文本與程式互動的途徑!
像我們Windows那個cmd視窗,像Linux那個黑乎乎的命令視窗,他們都是shell,利用他們,我們就可以給作業系統下達命令,同樣的,我們可以利用IDLE這個shell與Python進行互動,
2. print() 的作用是什么?
print() 會在輸出視窗中顯示一些文本
3. 為什么 >>>print('I love fishc.com ' * 5) 可以正常執行,但 >>>print('I love fishc.com ' + 5) 卻報錯?
在 Python 中不能把兩個完全不同的東西加在一起,比如說數字和文本
乘以一個整數來翻倍就具有一定的意義了,前邊的例子就是將 "I love fishc.com" 這個字串列印五次,
4. 如果我需要在一個字串中嵌入一個雙引號,正確的做法是?
可以利用反斜杠(\)對雙引號轉義:\"
或者用單引號引起這個字串,例如:' I l"o"ve fishc.com ',
5.動手試試直接輸入 >>>5+8 與輸入 >>>print(5+8) 有何不同?
不妨試試直接直接輸入 >>>'I love fishc.com!' 與輸入 >>>print('I love fishc.com!') 有何不同?
沒錯,直接輸入是將結果及型別列印到螢屏上,而print是將結果列印到螢屏上

18:35:03 2020-02-10
002講
ctrl+n新建
python要注意縮進 if guess==8:#==判斷是否相等 =賦值
BIF=內置函式(built-in function)
help(bif)了解功能
1. 用課堂上小甲魚教的方法數一數 Python3 提供了多少個 BIF?

在 Python 或 IDLE 中,輸入 dir(__builtins__) 可以看到 Python 提供的內置方法串列(注意,builtins 前后是兩個下劃線哦)其中小寫的就是 BIF,如果想具體查看某個 BIF 的功能,比如 input(),可以在 shell 中輸入 help(input),就會得到這個 BIF 的功能描述,哦,答案應該是 68 個,
2. 在 Python 看來:'FishC' 和 'fishc' 一樣嗎?
不一樣,因為 Python 是一個“敏感的小女孩”,所以不要試圖欺騙她,對 Python 來說,fishc 和 FishC 是完全不同的兩個名字,所以編程的時候一定要當心,不過 Python 會幫助解決可能因此出現的問題,例如只有當識別符號已經賦值后(還記得嗎,小甲魚在課堂中說過 Python 的變數是不用先宣告的)才能在代碼中使用,未賦值的識別符號直接使用會導致運行時錯誤,所以你很快就可以根據經驗發現此問題,
3. 在小甲魚看來,Python 中什么是最重要的?你贊同嗎?
縮進!在小甲魚看來,縮進是 Python 的靈魂,縮進的嚴格要求使得 Python 的代碼顯得非常精簡并且有層次,
所以在 Python 里對待縮進代碼要十分小心,如果沒有正確地縮進,代碼所做的事情可能和你的期望相去甚遠(就像C語言里邊括號打錯了位置),
如果在正確的位置輸入冒號“:”,IDLE 會自動將下一行縮進!
4. 這節課的例子中出現了“=”和“==”,他們表示不同的含義,你在編程的程序中會不小心把“==”誤寫成“=”嗎?有沒有好的辦法可以解決這個問題呢?
C語言的話,如果 if( c == 1 ) 寫成 if( c = 1 ),程式就完全不按程式員原本的目的去執行,但在 Python 這里,不好意思,行不通,語法錯誤!Python 不允許 if 條件中賦值,所以 if c = 1: 會報錯!
5. 你聽說過“拼接”這個詞嗎?
在一些編程語言,我們可以將兩個字串“相加”在一起,如:'I' + 'Love' + 'FishC' 會得到 'ILoveFishC',在 Python 里,這種做法叫做拼接字串,
19:03:00 2020-02-10
003講
變數
變數名不能用數字開頭 大小寫不能忽略
字串單引號雙引號都可以 但是兩邊要相同
轉義字符\
列印let's let\'s

三重引號字串

1.除了使用飯斜杠(\)進行字符轉義,還有什么方法可以列印:Let's go! 這個字串?
>>>"Let's go!"
>>>str = r'C:\Program Files\FishC\Good''\\'
3.使用變數,計算一年有多少秒?
DaysPerYear = 365
HoursPerDay = 24
MinutesPerHour = 60
SecondsPerMinute = 60
result = DaysPerYear * HoursPerDay * MinutesPerHour * SecondsPerMinute
print(result)
10:24:06 2020-02-11
004講
比較運算子
空格不影響編程 (為了美觀)
分支語法
if 條件:
條件真(True)
else:
條件(false)
while回圈
while條件:
true條件
and邏輯運算子得到bool值
生成亂數 random模塊
randint()#可以回傳一個隨機整數
進入死回圈 快捷鍵 CTRL + C(強制結束)
造成死回圈的原因是 while 后邊的條件永遠為真(True),在 Python 看來,只有以下內容會被看作假(注意冒號括號里邊啥都沒有,連空格都不要有!):False None 0 "" '' () [] {}
1. 請寫出與 10 < cost < 50 等價的運算式
(10 < cost) and (cost < 50)
2. Python3 中,一行可以書寫多個陳述句嗎?
可以,陳述句之間用分號隔開即可,不妨試試:
>>> print('I love fishc');print('very much!')
3. Python3 中,一個陳述句可以分成多行書寫嗎?
可以 一行過長的陳述句可以使用反斜杠或者括號分解成幾行
3>4 and \ 1<2
( 3 > 4 and
1 < 2 )
4. 請問Python的 and 運算子 和C語言的 && 運算子 有何不同?
python
1and3 ->4 0and1 ->0
C
1&&3 ->1 0 &&1 ->0
5.
temp = input('請輸入一個整數:') number = int(temp) while number: i = number - 1 while i: print(' ', end = '') i = i - 1 j = number while j: print('*', end = '') j = j - 1 print() number = number - 1

13:18:08 2020-02-11
005講
數值型別
整型 長度不受限制
浮點型 (區分整型有小數點)
e記法
bool型 true=1 false=0
相互轉換
a=5.99 c=int(a) c=5 截取整數部分
a=520 b=float(a) b=520.0
a=5.99 b=str(a) b='5.99'
c=str(5e19) c= '5e19'
type() #確定型別
isinstance()
eg: insintance(a,str) 回傳true
insintance(a,int) 回傳false
1. 你知道為什么布爾型別(bool)的 True 和 False 分別用 1 和 0 來代替嗎?
你可能聽說過計算機是很“笨”的,究其根本是因為它只認識二進制數,所以所有的編程語言最終都會轉換成簡單的二進制序列給 CPU 按照一定的規則決議,
由于二進制只有兩個數:0 和 1,因此用 0 和 1 來表示 False 和 True 再適合不過了,因為不用浪費資源在轉換的程序上!
2. 使用 int() 將小數轉換為整數,結果是向上取整還是向下取整呢?
小數取整會采用比較暴力的截斷方式,即向下取整,
但那是對于正數來說……對于負數則剛好相反 —— 是向上取整,
3. 我們人類思維是習慣于“四舍五入”法,你有什么辦法使得 int() 按照“四舍五入”的方式取整嗎?
int() 固然沒那么“聰明”,但機器是死的,魚油是活的!
5.4 “四舍五入”結果為:5,int(5.4+0.5) == 5
5.6 “四舍五入”結果為:6,int(5.6+0.5) == 6
13:32:12 2020-02-11
006講
算術運算子 + - * /
%取余
**冪乘
3**2 三的二次冪
/回傳浮點型
// 地板除法
10//8得到1
3.0//2.0得到1.0
a=a+3 -> a+=3
優先級 先乘除再加減 右括號先算括號里的
比較運算子 優先于 邏輯運算子
一元(單目)運算子
雙目運算子
冪運算 高于左面 低于右面
------------------------------------------------------------------------------------------------------------
邏輯運算子 and or not
and 同真為真
or 一真為真
not 一元 取反

4. 請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
如果你的回答是 0,那么小甲魚很開心你中招了!
答案是:4
not or and 的優先級是不同的:not > and > or
我們按照優先級給它們加上括號:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
== 4
為啥是 4?
大家還記得第四講作業提到的“短路邏輯”嗎?3 and 4 == 4,而 3 or 4 == 3,
所以答案是:4
13:43:00 2020-02-11
007講 008講 009講
分支和回圈
框架
加載背景音樂
播放背景音樂(回圈)
我方飛機誕生
interval = 0 #定義一個間隔
while true
if 用戶x掉
退出
interval += 1
if interval ==50:
interval = 0:
小飛機誕生
小飛機移動位置
螢屏重繪
if用戶滑鼠移動
我方飛機中心位置=滑鼠位置
螢屏重繪
if 我方與對方撞擊
我方掛 切換撞擊音樂
修改圖案
列印game over
停止音樂 最好淡出
elif -> else if
懸掛else else匹配錯誤
條件運算式 三元運算子

斷言 assert #用于置入檢查點 保證條件真才正常作業
assert后條件為假 自動崩潰 拋出assertionerror例外
>>>assret 3>4
assert這個關鍵字我們稱之為“斷言”,當這個關鍵字后邊的條件為假的時候,程式自動崩潰并拋出AssertionError的例外,
什么情況下我們會需要這樣的代碼呢?當我們在測驗程式的時候就很好用,因為與其讓錯誤的條件導致程式今后莫名其妙地崩潰,不如在錯誤條件出現的那一瞬間我們實作“自爆”,
一般來說我們可以用Ta再程式中置入檢查點,當需要確保程式中的某個條件一定為真才能讓程式正常作業的話,assert關鍵字就非常有用了,
while條件:
回圈體
for回圈
for 目標 in 運算式:
回圈體

range()
range([start,] stop [, step=1] ) 
break continue
break 終止回圈 跳出回圈體
continue 終止本輪回圈 并開始下一輪回圈 開始下一輪回圈前測驗回圈條件 true 開始下一輪回圈

1. 你聽說過成員資格運算子嗎?
Python 有一個成員資格運算子:in,用于檢查一個值是否在序列中,如果在序列中回傳 True,否則回傳 False,
例如:
- >>> name = '小甲魚'
- >>> '魚' in name
- True
- >>> '肥魚' in name
- False
15:17:43 2020-02-11
010講
串列
陣列 放在一起資料必須型別一致
Python無陣列 有串列
創建普通串列 用 [ , , , , , ] 創建
可以放不用型別元素
可以創造空串列 empty=[]
向串列添加元素->append()
用 . 呼叫
只能添加一個元素
extend() #使用一個串列 擴展另一個串列
insert() #兩個引數 第一個是位置 第二個是插入元素內容 從0開始

16:24:04 2020-02-11
011講
從串列中獲取元素 #索引值從0開始
menber[0]
交換 01位置元素
temp=member[0]
member[0] = member[1]
member[1] = temp
洗掉
remove() #必須知道元素具體名字
member.remove('fish ')
del
del member[1]
還可以用于洗掉整個串列->del member
pop () #python是用堆疊存盤
member.pop()
串列分片Slice 
包頭不包尾 左閉右開

member[ : ] # 用途 要修改串列 把之前的做一個拷貝member2=member[ : ]
如果直接=member 那么 member改變 2也改變

012講
常用串列運算子
比較運算子
串列不相等 回傳第一個元素比較值
邏輯運算子
連接運算子

錯誤:
重復運算子

成員關系運算子 in not in

無法判斷串列里的串列 只能判斷一個層次內的是否存在

串列中的串列中元素值 list[1][1] #類似C語言的二維陣列
count ->list3 . count(123) #123在list3中出現多少次
index -> list3.index(123) #123的位置
list3.index(123,3,7) #123在串列3-7范圍 出現的位置
reverse ->list3. reverse() #整個串列翻轉
sort ->list3.sort() #從小到大排序
->sort(func,key)
->sort(reverse=true)->list3.sort(reverse=true) #從大到小排序
17:02:04 2020-02-11
013講
元組tuple #與串列相似 元素一點定義不可改變
創建和訪問元組
與串列相似
修改一個元素會報錯
元組標志是,不是() ->如果只有一個元素則需要在后面加,

更新和洗掉元組
在元組中插入一個元素
拆分成兩半 然后用拼接運算子 分別拷貝一下 再插入
元組相關運算子: 拼接、重復 (*8)、邏輯、關系、成員in not in
17:24:16 2020-02-11
014講
字串的方法及注釋 Python -help 可以查找幫助
| capitalize() | 把字串的第一個字符改為大寫 | ![]() |
| casefold() | 把整個字串的所有字符改為小寫 | ![]() |
| center(width) | 將字串居中,并使用空格填充至長度 width 的新字串 | ![]() |
| count(sub[, start[, end]]) | 回傳 sub 在字串里邊出現的次數,start 和 end 引數表示范圍,可選, | ![]() |
| encode(encoding='utf-8', errors='strict') | 以 encoding 指定的編碼格式對字串進行編碼, | |
| endswith(sub[, start[, end]]) | 檢查字串是否以 sub 子字串結束,如果是回傳 True,否則回傳 False,start 和 end 引數表示范圍,可選, | ![]() |
| expandtabs([tabsize=8]) | 把字串中的 tab 符號(\t)轉換為空格,如不指定引數,默認的空格數是 tabsize=8, | ![]() |
| find(sub[, start[, end]]) | 檢測 sub 是否包含在字串中,如果有則回傳索引值,否則回傳 -1,start 和 end 引數表示范圍,可選, | ![]() |
| index(sub[, start[, end]]) | 跟 find 方法一樣,不過如果 sub 不在 string 中會產生一個例外, | |
| isalnum() | 如果字串至少有一個字符并且所有字符都是字母或數字則回傳 True,否則回傳 False, | |
| isalpha() | 如果字串至少有一個字符并且所有字符都是字母則回傳 True,否則回傳 False, | |
| isdecimal() | 如果字串只包含十進制數字則回傳 True,否則回傳 False, | |
| isdigit() | 如果字串只包含數字則回傳 True,否則回傳 False, | |
| islower() | 如果字串中至少包含一個區分大小寫的字符,并且這些字符都是小寫,則回傳 True,否則回傳 False, | |
| isnumeric() | 如果字串中只包含數字字符,則回傳 True,否則回傳 False, | |
| isspace() | 如果字串中只包含空格,則回傳 True,否則回傳 False, | |
| istitle() | 如果字串是標題化(所有的單詞都是以大寫開始,其余字母均小寫),則回傳 True,否則回傳 False, | ![]() |
| isupper() | 如果字符串中至少包含一個區分大小寫的字符,并且這些字符都是大寫,則回傳 True,否則回傳 False, | |
| join(sub) | 以字串作為分隔符,插入到 sub 中所有的字符之間, | ![]() |
| ljust(width) | 回傳一個左對齊的字串,并使用空格填充至長度為 width 的新字串, | |
| lower() | 轉換字串中所有大寫字符為小寫, | |
| lstrip() | 去掉字串左邊的所有空格 | |
| partition(sub) | 找到子字串 sub,把字串分成一個 3 元組 (pre_sub, sub, fol_sub),如果字串中不包含 sub 則回傳 ('原字串', '', '') | ![]() |
| replace(old, new[, count]) | 把字串中的 old 子字串替換成 new 子字串,如果 count 指定,則替換不超過 count 次, | |
| rfind(sub[, start[, end]]) | 類似于 find() 方法,不過是從右邊開始查找, | |
| rindex(sub[, start[, end]]) | 類似于 index() 方法,不過是從右邊開始, | |
| rjust(width) | 回傳一個右對齊的字串,并使用空格填充至長度為 width 的新字串, | |
| rpartition(sub) | 類似于 partition() 方法,不過是從右邊開始查找, | |
| rstrip() | 洗掉字串末尾的空格, | |
| split(sep=None, maxsplit=-1) | 不帶引數默認是以空格為分隔符切片字串,如果 maxsplit 引數有設定,則僅分隔 maxsplit 個子字串,回傳切片后的子字串拼接的串列, |
|
| splitlines(([keepends])) | 在輸出結果里是否去掉換行符\n,默認為 False,不包含換行符;如果為 True,則保留換行符,, | |
| startswith(prefix[, start[, end]]) | 檢查字串是否以 prefix 開頭,是則回傳 True,否則回傳 False,start 和 end 引數可以指定范圍檢查,可選, | |
| strip([chars]) | 洗掉字串前邊和后邊所有的空格,chars 引數可以定制洗掉的字符,可選, | ![]() |
| swapcase() | 翻轉字串中的大小寫, | |
| title() | 回傳標題化(所有的單詞都是以大寫開始,其余字母均小寫)的字串, | |
| translate(table) | 根據 table 的規則(可以由 str.maketrans('a', 'b') 定制)轉換字串中的字符, | |
| upper() | 轉換字串中的所有小寫字符為大寫, | |
| zfill(width) | 回傳長度為 width 的字串,原字串右對齊,前邊用 0 填充, | z->zero |
20:00:36 2020-02-11
015講
format方法 字串的格式化問題 按照統一規格輸出
位置引數
關鍵字引數
可以綜合使用,但位置 引數要在關鍵字引數之前
字串格式化符號轉義
| 符號 | 說明 | |
| %c | 格式化字符及其 ASCII 碼 | ![]() |
| %s | 格式化字串 | ![]() |
| %d | 格式化整數 | ![]() |
| %o | 格式化無符號八進制數 | ![]() |
| %x | 格式化無符號十六進制數 | ![]() |
| %X | 格式化無符號十六進制數(大寫) | ![]() |
| %f | 格式化浮點數字,可指定小數點后的精度 | ![]() |
| %e | 用科學計數法格式化浮點數 | ![]() |
| %E | 作用同 %e,用科學計數法格式化浮點數 | ![]() |
| %g | 根據值的大小決定使用 %f 或 %e | ![]() |
| %G | 作用同 %g,根據值的大小決定使用 %f 或者 %E |
格式化運算子輔助命令
| 符號 | 說明 | |
| m.n | m 是顯示的最小總寬度,n 是小數點后的位數 | ![]() |
| - | 用于左對齊 | ![]() |
| + | 在正數前面顯示加號(+) | ![]() ![]() |
| # | 在八進制數前面顯示 '0o',在十六進制數前面顯示 '0x' 或 '0X' | ![]() ![]() |
| 0 | 顯示的數字前面填充 '0' 取代空格 |
![]() |
Python 的轉義字符及其含義
| 符號 | 說明 |
| \' | 單引號 |
| \" | 雙引號 |
| \a | 發出系統響鈴聲 |
| \b | 退格符 |
| \n | 換行符 |
| \t | 橫向制表符(TAB) |
| \v | 縱向制表符 |
| \r | 回車符 |
| \f | 換頁符 |
| \o | 八進制數代表的字符 |
| \x | 十六進制數代表的字符 |
| \0 | 表示一個空字符 |
| \\ | 反斜杠 |
17:22:12 2020-02-12
016講
序列
串列 元組 字串
list()把一個可迭代物件轉換為串列
不帶引數 生成一個空串列
帶一個iterable迭代器

sum
>>>list(ennumberate(numbers)) #串列每個元素變成一個元組,,元組前加了一個index值
zip a=[1,2,3,4,5,6] b=[1,2,3] >>>list (zip(a,b)) [(1,1),(2,2),(3,3)]
#成對打包
20:26:49 2020-02-12
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/204723.html
標籤:Python
上一篇:python標準庫簡介






























