編程與計算機
概述
計算機
計算機五大結構:輸入設備,存盤器,控制器,運算器,輸出設備
存盤器與運算器統稱為CPU
計算機作業系統負責管理計算機硬體資源->系統呼叫
編程
編程是人與計算機的互動方式,人通過編程來操縱計算機完成事情.
編程范式:程序式編程,面向物件編程,函式時編程.python是多范式語言.
語言思想(自我總結)
- 從0到n
- 簡約:不要無用的東西,簡化復雜的東西
- 可讀易理解
- 追求效率:細分
編程思想
封裝
模塊是比函式更高一級的,檔案的復用
- 復用
- 變數提供的符號化,是代碼復用的第一步
- 函式封裝陳述句,實作代碼的復用
- 引入模塊,是檔案級的代碼復用
python語言特點
優點: 易讀.實用,可拓展性好
缺點:運行不如C
特點:
- 動態型別:python可以自由改變變數的型別,所以運行比c慢
- 強縮進:縮進表示代碼從屬關系,大哥,小弟,同學 特別重要
計算機會算術
數值運算->計算器
>>> 1+5 # 加
6
>>> 2-3 #減
-1
>>> 1*6 #乘
6
>>> 6/2 #除法默認浮點
3.0
>>> 6.0/3 #浮點
2.0
>>> 6/3.0 #浮點
2.0
>>> 18//4 #取商
4
>>> 18%4 #取余
2
>>> 4**2 #乘方
16
字串的加法&乘法
>>> 'hi'*2 #字串乘法
'hihi'
>>> 'hi'+'hello' #字串加法
'hihello'
邏輯運算->判斷對錯
- 布林值: True & False
>>> True
True
>>> False
False
- 邏輯連詞: 與(and),或(or),非(not)
>>> True and True
True
>>> False and True
False
>>> False and False
False
>>> not True
False
- 判斷運算式: 等于(==),大于(>),小于(<),小于等于,大于等于,不等于(!=)
>>> 1 == 1
True
>>> 8.0 != 8.0
False
>>> 4 < 5
True
>>> 3 <= 3
True
- 從一到多->組合應用
>>> 6>2 and 4>3 and 1>2 #多組判斷
False
- 運算優先級問題(由高到低)
** 乘方
* / 乘除
+ - 加減
== >= <= > < ! = 判斷
not and or 邏輯
計算中,括號先行是萬能的
高優先級先運算,相同優先級從左到右
>>> 4+2>=7 #優先級順序
False
>>> 1>2 and 4<3 or 6>2
True
>>> 1>2 and (4<3 or 6>2)
False
- 數字無法判斷正誤
>>> 4*2 and 6-3 # 數字無法判讀
3
>>> 5 and 5 #數字無法判斷
5
計算機記性好
- 計算機存盤->變數革命:
計算機存盤資料是將資料存盤在記憶體的單元格中,通過記憶體地址提取資料.記憶體分成一個單元格,每個格有一個記憶體地址,型別盒子與盒子編號.但是人們在使用中有三個問題,第一是記憶體地址太長,不好記,第二是在使用之前,無法確定盒子是空著的嗎?第三是不同的型別的資料需要的盒子數目不同,盒子數目難以確定.因此,發明了變數,規定在創建變數時候,計算機分配記憶體出空著的單元格子便于裝資料,不同型別的變數有不同數目的格子,通過變數名來提取資料.
變數名直接參與運算是邁向抽象思維的第一步.數學上,符號代替數值的做法稱為代數.-->變數提供的符號化表達方式是代碼復用的第一步.
>>> wood =5 # =表示賦值
>>> wood = wood+5 # 計算機先執行賦值符號右邊的運算,
>>> print(wood)
10
>>> 6 = n #賦值號左邊只能是變數名,賦值陳述句
SyntaxError: can't assign to literal
- 變數的型別->由資料決定
- 資料型別:整數(integer),浮點數(float),字串(string),布林值(boolean).
>>> a = 100 #int
>>> b = 100.0 #float
>>> a = 'abc' #str,字串就是一串字串起來
>>> a = True #bool
python中變數的型別是可以自由變化的,變數的型別由存盤的資料決定,被稱為動態型別.
- 變數型別:單容量變數,多容量變數:序列(list(串列),tuple(元組),)dict(詞典)
- 使用變數
- 命名:變數的命名規則: 字母,數字,下劃線,字母開頭,為了增加可讀性,變數名應有意義.不能與關鍵字相同31個
>>> import keyword
>>> print (keyword.kwlist)
['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']
2. 賦值陳述句:賦值陳述句先執行等號右邊,等號左邊只能是變數
序列->存放有序的一列資料
- 大容器.收納多個資料.引出大容量型變數:序列&詞典
序列是有順序的資料集合:一排站好的小兵.數列中的一個資料稱為元素.序列中可以包含多個元素,也可以一個元素都沒有.但一般很少創建空元祖,常見的是空串列. - 序列的分類
串列(list),元祖(tuple)
區別:串列中的元素是可變的,元祖中的元素是不可變,是固定的資料. - 創建序列:
>>> example_list = [True,5,'smile'] # 創建串列
>>> type(example_list) # 查看型別,type()函式查看型別
<class 'list'>
>>> example_tuple = (1,2,1.3,'love',False) #創建一個元祖
>>> type(example_tuple) #查看型別
<class 'tuple'>
>>> kong_list = [] #創建空串列
- 讀取序列中的資料
序列既然是存盤資料的容器,那我們就可以讀取存盤的資料
序列中的元素是有排列的,我們根據位置來找到對應的元素.序列元素的位置索引稱為下標(index).序列中下標從0開始為了與C語言一致.
>>> example_tuple = (1,2,1.3,'love',False) # 逗號表示并列
>>> example_tuple[0] #提取元祖中第一個元素
1
>>> example_list = [True,5,'smile']
>>> example_list[2] #提取串列中第三個元素
'smile'
>>> nest_list = [1,[3,4,5]] #串列中嵌套串列
>>> nest_list[1][2] #提取第二個串列中的第三個元素
5
- 引申讀取串列中的資料
除了通過下標找到單個元素以外,還可以范圍參考
序列名[下限:上限:步長] ,不包括上限
>>> example_tuple[:5] #從下標0到下標4,不包括下標5的元素.冒號表示繼續
(1, 2, 1.3, 'love', False)
>>> example_tuple[2:] #從下標2到最后一個元素
(1.3, 'love', False)
>>> example_tuple[0:5:2] #從下標0,2,4的元素.每間隔兩個取值
(1, 1.3, False)
>>> example_tuple[0:5:2]
(1, 1.3, False)
>>> a = example_tuple[0:5:2]
>>> type(a) # 范圍參考結果還是元祖
<class 'tuple'>
>>> a
(1, 1.3, False)
- 尾部參考的語法
>>> example_tuple[-1] # 序列最后一個元素
False
>>> example_tuple[1:-1] #序列第二個到倒數第二個元素->范圍參考不包括上限
(2, 1.3, 'love')
- 變更串列中的資料
通過下標對串列中單個元素進行賦值.元祖不可變.
>>> example_list[1]=3.0 #更改串列中的第二個元素為3.0
>>> example_list
[True, 3.0, 'smile']
詞典
詞典是可以容納多個無順序資料的容器,詞典允許用自定義(自由)的方式建立資料的索引,而不是采用下標(因為無順序)
>>> example_dict={'tom':11,'sam':57,'lily':100} #創建詞典
>>> type(example_dict)
<class 'dict'>
>>>example_dict={'hi':16,'hello':59,'free':99} #創建詞典
>>>print(example_dict['hi']) #提取詞典元素,列印hi對應的值
>>>example_dict['lilei']=59 #添加詞典元素
>>>print(example_dict)# 列印詞典
>>>example_dict={}#創建空詞典
16
{'hi': 16, 'hello': 59, 'free': 99, 'lilei': 59}
一般用字串作為詞典的鍵,但其他資料也可以.
計算機懂選擇
背景
開始時,計算機程式是按照順序由上到下執行,我們需要撰寫大量重復的陳述句,因此,人們開始琢磨哪些更改陳述句執行順序的方法,使得陳述句執行可以跳轉.但是人們發現,有跳轉的陳述句使得程式讀起來像面條一樣,很是費勁,所以簡化發現,跳轉主要功能就是選擇&回圈,人們創建了選擇陳述句與回圈陳述句.通過選擇陳述句與回圈陳述句的撰寫,使得計算機程式進入結構化的時代.
if結構
- if_else陳述句
>>> i=3
>>> if i>2:
print('hi')
else:
print('why')
hi
- 補充
- else陳述句不是必須的(簡約)
- if,elif多個選擇分支,elif陳述句不限個數
- if嵌套if陳述句,分支選擇
計算機能回圈
- for回圈
for回圈功能:
- 遍歷序列
for 元素 in 序列&詞典
#遍歷詞典,但是只能提取出值
for i in {'hello':6,'hi':5}:
print(i)
hello
hi
- 回圈指定次數 range()函式
for i in range(次數)
#回圈列印1到9
for i in range(1,10):
print(i)
# 回圈列印0到4,從0計數
for i in range(5): #從0開始計數
print(i)
- while回圈
while后面緊跟著一個條件陳述句,當條件為真時,才會開始回圈.陳述句體中,應有一個更改條件變數的陳述句,達到終止回圈,避免無限回圈的目的.
#while無限回圈
while True:
print('hello world')
# while條件回圈
while i>2: #無限回圈
print('hi')
i=3
while i>2:#條件為真才會執行回圈,陳述句體中應該有使得條件為假的陳述句
print(i) #從3開始列印數,到永遠
i=i+1
i=9
while i>2:#列印9到3
print(i)
i=i-1# 使得條件為假
- continue陳述句與break陳述句
continue陳述句:終止此次回圈,直接下一次回圈
break陳述句:直接終止回圈
#continue:停止此次回圈,進入下一次回圈
# 列印出9到5,到4時處于死回圈狀態
i=9
while i>2:#列印9到5
if i==4:
continue
print(i)
i=i-1# 使得條件為假
# 列印出9到5,到4時處于死回圈狀態
i=9
while i>2:#列印9到5
if i==4:
continue
i=i-1 #continue小弟陳述句不會執行
print(i)
i=i-1# 使得條件為假
# 列印出9到3,無4
i=9
while i>2:#列印9到5
if i==4:
i=i-1 #跳出continue回圈的條件
continue
print(i)
i=i-1# 使得條件為假
i=9
while i>2:#列印9到5
if i==4:
i=i-1 #跳出continue回圈的條件
continue
print(i)
i=i-1# 使得條件為假
# break陳述句跳出回圈
#列印9到5
i=9
while i>2:#列印9到5
if i==4:
break#跳出回圈
print(i)
i=i-1# 使得條件為假
#列印9到5與hello
i=9
while i>2:#列印9到5
if i==4:
break#跳出回圈
print(i)
i=i-1# 使得條件為假
print('hello')
while i>2:#列印9到5,條件變數值需要優先設定
if i==4:
break#跳出回圈
print(i)
i=i-1# 使得條件為假
print('hello')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/161515.html
標籤:Python
