Day1-python入門
- 2020 年 1 月 13 日
- 筆記
一、編程與程式語言
python是一門程式語言,搞明白三點:
1、編程目的?
電腦的發展就是為解放人力,機器是死的,所以人必須找到一種能夠被機器識別的表達式從而把自己的思想按照這個表達方式傳遞機器,完成機器可以自發的工作。
2、什麼是程式語言?
上面所說的表達方式指的就是程式語言
英語 |
python |
---|---|
單詞 |
關鍵字 |
語法 |
語法 |
作文 |
程式 |
3、什麼編程?
按照某種程式語言的語法風格寫程式,程式在未執行前就是一堆普通文件。
二、程式語言的分類:
1. 機器語言
機器語言,故名就是站在機器的角度能夠識別的語言。對於機器來說,它是通過電壓的高低變化來工作的,而電壓分為高電壓和低電壓,高電壓為1,低電壓為0 ,所以機器語言就是有0和1組成的程式碼。 優點:執行效率最快 缺點:開發效率低,學習難度大
2. 彙編語言
彙編語言是通過把0、1組成的程式碼串封裝成一個個指令,人可以通過這些指令直接操作機器硬體,相對於機器語言來說,彙編語言是比較容易被人接受的。 優點:執行效率較高級語言快,但沒有機器語言快 缺點:開發效力低,學習難度大
3. 高級語言
高級語言,是站在人的立場上來說的,通過人的思維方式來進行語言的組織形成的語言,最接近於人對語言的理解和掌握。高級語言有很多,如:python、Java、C、C++、C#、Go…… 高級語言又分為編譯型語言和解釋型語言: 編譯型: 程式碼在執行前需要通過編譯器,將所有要執行的程式碼文件進行編譯,待編譯成功完成之後,才能執行程式碼。 如:C、C++、Java… 這種語言的執行速度較解釋型語言快,但是開發調試的效率較低 解釋型: 解釋型語言編寫的程式碼在執行的過程中,編譯器一行一行的讀取程式碼,每讀取一行就執行一行。 如:python、php、go… 這種語言的執行速度較編譯型語言慢,由於其便於調試,使得開發的效率較高。
三、寫程式的兩種方式:
1. 互動式
直接在命令行(Linux下shell、Windows下cmd)輸入python 進行互動式編寫,方便調試,但是程式碼不能保存。
2. 文件方式
將程式碼寫進文件里,就像是編輯普通的文件,然後執行python C:test.pyhon即可執行
四、變數:
什麼是變數?
變指的是「變化」,量指的是反映某種狀態
如何定義變數?
定義一個變數: name = "huazai" 解釋: name:即變數名稱 = :語法規則,即賦值符號 huazai: 變數的值
變數名的命令規則?
#1. 變數名只能是 字母、數字或下劃線的任意組合 #2. 變數名的第一個字元不能是數字 #3. 關鍵字不能聲明為變數名[ 定義變數方式: 1.駝峰式 2.下劃線
五:常量
常量通常全部用大寫字母,不應該去改變的量。 AGE_OF_OLDBOY=54
六 執行過程
python3 C:test.py 1、先啟動python3.exe 2、把C:test.py從硬碟讀入記憶體 3、解釋執行文件內容(識別python語法)
七、引用計數+垃圾回收機制
在python中,自帶有垃圾回收機制,原理就是當一塊記憶體空間的引用計數為0的時候,python就會自動將這個記憶體空間釋放,即垃圾記憶體回收,這個回收是定時完成的,並非引用計數為0,記憶體即被回收。 x='aaa' #'aaa'這個值的引用計數為1 y=x #'aaa'這個值的引用計數為2
八、產生一個變數的三要素
name='huazai' 變數值:用來表示狀態 用變數名取變數值 print(name) 變數值的類型:表示不同的狀態應該用不同類型的值去表示(數字:年齡,字元串:名字) print(type(name)) 變數值的id號: print(id(name)) 判斷值是否相等:== 判斷id是否相等:is
九、程式與用戶交互
user=input('') #把用戶輸入的內容存成字元串
十、基本運算
python的基本運算包括有算數運算、比較運算、賦值運算、邏輯運算、身份運算。
算數運算
算數運算就是基本的加、減、乘、除、乘方、求余等
符號 |
意義 |
---|---|
+ |
加 |
– |
減 |
* |
乘 |
/ |
除 |
// |
除後取整 |
% |
求余 |
** |
冪 |
示例: >>> a = 2;b=5 >>> a + b 7 >>> a - b -3 >>> a * b 10 >>> b/a 2 >>> b//a 2 >>> b%a 1 >>> b**a 25
比較運算
比較運算就是兩個值之間進行大小比較,比較結果正確為True,錯誤為False
符號 |
意義 |
---|---|
> |
大於 |
< |
小於 |
== |
等於 |
!= |
不等於 |
>= |
大於等於 |
<= |
小於等於 |
<> |
不等於 |
示例: >>> a = 2;b=5 >>> a>b False >>> a<b True >>> a==b False >>> a!=b True >>> a>=b False >>> a<=b True >>> a<>b True
賦值運算
對一個變數進行複製計算
符號 |
意義 |
---|---|
= |
賦值 |
+= |
加後賦值 |
-= |
減後賦值 |
×= |
乘後賦值 |
/= |
除後賦值 |
%= |
求余後賦值 |
**= |
冪後賦值 |
//= |
取整後賦值 |
示例: >>> a=2 >>> a+=1 >>> a 3 >>> a-=1 >>> a 2 >>> a*=2 >>> a 4 >>> a/=2 >>> a 2 >>> a%=3 >>> a 2 >>> a**=2 >>> a 4 >>> a//=3 >>> a 1
邏輯運算
邏輯運算分為三種:或、與、非 邏輯運算的結果為布爾值:True、False 在邏輯運算中:
符號 |
意義 |
---|---|
and |
與:當and左右兩側的結果都是True的時候,結果為True |
or |
或:當or左右兩側的結果有一個為True時,結果為True |
not |
對結果取反 |
示例: >>> a = 2 ;b = 5 >>> a < b and b > 3 True >>> a < b and b > 6 False >>> a < b or b > 6 True >>> not a < b or b > 6 False >>> not a < b or b < 6 True
身份運算
== 對值進行比較 is 對id進行比較 示例: >>> a = 123456789 >>> b = 123456789 >>> a == b True >>> a is b False >>> id(a) 8846240 >>> id(b) 8846252
十一、流程式控制制(重要)
流程式控制制對於程式來說至關重要,有了流程式控制制,機器可以像人一樣對發生的事情進行判斷,可以在一定的條件下重複相同的動作。流程式控制制讓機器能夠更加智慧化。
if…else
# 根據輸入的成績,輸出該成績所在的等級 #!/usr/bin/env python #_*_coding:utf-8_*_ score = input("請輸入你的分數:") score = int(score) if score > 90: print("優秀") elif score > 80: print("良好") elif score > 60: print("及格") else: print("不及格")
while循環
在實際情況中,我們不僅要讓機器對一些情況做一次判斷,當某個值在不停發生變化的時候,我們需要機器判斷出當這個值在符合某中條件下,一直去重複某種動作,這時候就需要while循環來處理。
例如:上例中可以讓用戶在程式不退出的情況下多次查詢,只有用戶輸入'q'時,程式才退出
#!/usr/bin/env python #_*_coding:utf-8_*_ while True: score = input("請輸入你的分數:") if score == "q": break else: score = int(score) if score > 90: print("優秀") elif score > 80: print("良好") elif score > 60: print("及格") else: print("不及格") 結果演示: C:UsersAdministratorPycharmProjectsPY20venv1Scriptspython.exe C:/Users/Administrator/PycharmProjects/PY20/day1/流程式控制制.py 請輸入你的分數:34 不及格 請輸入你的分數:78 及格 請輸入你的分數:89 良好 請輸入你的分數:96 優秀 請輸入你的分數:q Process finished with exit code 0
練習題
基礎需求:
- 讓用戶輸入用戶名密碼
- 認證成功後顯示歡迎資訊
- 輸錯三次後退出程式
示例程式碼:
#!/usr/bin/env python #_*_coding:utf-8_*_ name = "huazai" pwd = "123456" count = 1 while True: if count > 3: print("too more times faild,exit.") break user = input("name>>>:") passwd = input("password>>:") if user == name and passwd == pwd: print("welcome to login ") break else: print("name or password error") count+=1
升級需求:
- 可以支援多個用戶登錄 (提示,通過列表存多個賬戶資訊)
- 用戶3次認證失敗後,退出程式,再次啟動程式嘗試登錄時,還是鎖定狀態(提示:需把用戶鎖定的狀態存到文件里)
示例程式碼:
#!/usr/bin/env python #_*_coding:utf-8_*_ import time user_list = [ ["huazai","123456"], ["egon","123"], ["alex","1234"] ] count = 0 lock_file="lock_user.txt" tag = True while tag: if count < 3: user = input("name>>>:") passwd = input("password>>:") L = [user, passwd] with open(lock_file,'r') as file: for line in file.readlines(): if L[0] in line: print("%s is locked,請聯繫管理員" %L[0]) tag = False if L in user_list: print("welcome to login.") break else: print("name or password is error") else: print("too more times faild,exit.") f = open("lock_user.txt", "w") data = L[0] + " is lock" print(type(data)) f.write(data) f.close() break count+=1