python 全棧開發,Day1,python開發day1
一,Python介紹
python的出生與應用
python的創始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·范羅蘇姆(中文名字:龜叔)為了在阿姆斯特丹打發時間,決心開發一個新的指令碼解釋程式,作為ABC語言的一種繼承。
目前Python主要應用領域:
二,電腦基礎
cpu:
相當於人的大腦,運算與控制中心。
速度 飛機
記憶體:暫
時儲存,供給CPU資料。
速度 高鐵。成本高,斷電即消失。
硬碟:
相當於電腦的資料庫,儲存著大量的資料,檔案,音頻檔案。
速度 走。成本低
作業系統:
執行者,支配所有關係。windows,linux,mac...
python流行的原因
1.大量第三方庫
2.Diango
三、python的曆史
Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。
python 2x和3x在同一年誕生,2x是10月,3是12月
python 2x:源碼混亂,重複代碼較多,冗餘。
python 3x: 源碼規範,崇尚優美、清晰,簡單
四、python 2x,python 3x的區別
1.print方法有區別
python 3x print('內容')
python 2x print()或者print '內容'
2.編碼方式不一樣
python 3x 預設編碼:utf-8
python 2x 預設編碼: ascii 只包含英文字母和特殊字元以及數字
不支援中文
解決方式:
在頭部增加
# -*- coding: utf-8 -*-
3.input不同
python 2x: raw_input()
python 3x: input()
五、開發語言的分類
解釋型:當程式運行時,將代碼一行一行的解釋成二進位,再運行。
優點:排錯快,開發效率高,可以跨平台
缺點:執行效率相對低
典型:python,
編譯型:將代碼一次性全部編譯成二進位,然後運行。
缺點:排錯慢,開發效率低,不能跨平台(作業系統)。
優點:執行效率高
典型:C
python的種類
CPython 預設解譯器,轉換為位元組碼,再轉換為c語言010101...
IPython
PyPy 一次性全部轉化成二進位,執行效率高。
Jython 把Python代碼編譯成Java位元組碼執行
IronPython
雖然解譯器不同,但是寫python代碼的規則還是統一的。
六、運行第一個python程式
如果想要windows電腦同時有2個python環境,Python2.7和Python3.5
先安裝python2.7
1、下載安裝包
https://www.python.org/downloads/
2、安裝
預設安裝路徑:C:\python27
勾選添加環境變數
再安裝python3.5
選擇自訂安裝,勾選添加環境變數
安裝路徑設定為C:\Python35
進入目錄C:\Python27
將python.exe更改為python2.exe
開啟windows命令列模式
輸入python2就是2.7版本
輸入python就是3.5版本
建立一個test.py檔案,內容如下
print('你好,世界')
使用命令列方式
My Code路徑在E:\python_script\day1
進入目錄,執行代碼
使用python2執行
執行報錯
因為預設python2x編碼是ascii,不支援中文
在第一行添加
# -*- coding: utf-8 -*-
再次執行,就可以了
如果python安裝完成之後,發現執行python有問題時
可以把所有python版本卸載,重新安裝一次,確保環境變數已經刪除,檔案尾碼是可以顯示的。
七、變數
變數:把程式啟動並執行中間結果臨時的存在記憶體裡,以便後續的代碼調用。
變數定義的規則:
1,變數必須由數字,字母,底線任意組合。
2,變數不能以數字開頭。
3,變數不能是python中的關鍵字。(不用背)
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda','not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
4,變數要具有可描述性。
5,變數不能是中文。
6,變數不能太長。
7,官方推薦:
#駝峰體AgeOfOldboy = 56NumberOfStudents = 100#底線age_of_oldboy = 56number_of_students = 80
一般推薦使用第2種,也就是底線的方式。
下面幾個例子,判斷變數名是否合法
w__ = 22e_a_ = '太白'e$ = 'fdsa'-_ = '15'2g = 33__ = '老村長'
3,4,5行的變數,是不合法的,其他的都是合法的。
賦值計算
先計算等號右邊的,把計算的值賦值給左邊的
python是解釋型語言,代碼是一行一行執行
後面的變數會覆蓋前面的。
age1 = 12age2 = age1age3 = age2age2 = 6print(age1,age2,age3)
執行輸出
12 6 12
看一個圖
age1~3的值,儲存在記憶體中。當age2等於6時,age2值的指向就發生了變化,值為6
7.常量
常量即指不變的量,如pai 3.141592653..., 或在程式運行過程中不會改變的量
預設全部大寫的變數,稱之為常量。
CITY_LIST = 'beijing'
11.注釋
為什麼有注釋?
協助你記起之前的代碼,或者協助別人看懂你的代碼
不宜多,精就行
單行注釋: #被注釋內容
多行注釋: '''被注釋內容''' 或者 """被注釋內容"""
#定義一個變數name1 = "taibai"'''虞美人·碧苔深鎖長門路清代:王國維碧苔深鎖長門路。總為蛾眉誤。自來積毀骨能銷。何況真紅一點臂砂嬌。妾身但使分明在。肯把朱顏悔。從今不複夢承恩。且自簪花坐賞鏡中人。'''
八、基礎資料類型初始
int(整型)
在32位機器上,整數的位元為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位元為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器記憶體有限,我們使用的長整數數值不可能無限大。
注意,自從Python2.2起,如果整數發生溢出,Python會自動將整數資料轉換為長整數,所以如今在長整數資料後面不加字母L也不會導致嚴重後果了。
注意:在Python3裡不再有long類型了,全都是int長整型
字串類型(str)
在Python中,加了引號的字元都被認為是字串!
msg = "My name is xiao,I'm 22 years old!"num = '12'
這種會出錯
msg = "My name is xiao,I"m 22 "years old!"
雙引號,只看2頭的,從左至右
一般3個引號的,用到多行的情境,有行號符的。
一行很少用3個引號的
shi = '''馬汗踏成泥,朝馳幾萬蹄。雪中行地角,火處宿天倪。塞迥心常怯,鄉遙夢亦迷。那知故園月,也到鐵關西。'''print(shi)
執行輸出
馬汗踏成泥,朝馳幾萬蹄。
雪中行地角,火處宿天倪。
塞迥心常怯,鄉遙夢亦迷。
那知故園月,也到鐵關西。
3個單引號,沒有賦值,是用來注釋的
比如上面的唐詩《虞美人·碧苔深鎖長門路》
字串只能相加和相乘
相加
n1 = '她的名字是'n2 = '南宮紫菱'n3 = n1 + n2print(n3)
執行輸出
她的名字是南宮紫菱
相乘
n1 = '我好愛你!'print(n1 * 3)
執行輸出
我好愛你!我好愛你!我好愛你!
九、布爾值(True,False)
布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷
print(1 > 2)
執行輸出
False
返回false
布爾值是不帶引號的
print(1 > 2 and 3 < 4 or 4 > 5)
執行輸出
False
布爾值判斷時,如果出現false,結果返回false
九、查看資料類型
使用type()方法
n1 = 'nan'n2 = Falsen3 = 'False'print(type(n1))print(type(n2))print(type(n3))
執行輸出
<class 'str'>
<class 'bool'>
<class 'str'>
十、使用者互動 input
input出來的資料類型,都是字串
name = input('請輸入你的名字: ')age = input('請輸入你的年齡: ')hobby = input('請輸入你的愛好: ')s = '我的名字是' + name + '\n我的年齡是' + age + '\n我的愛好是' + hobbyprint(s)
執行效果
十一、if語句
第一種結構
if 條件: 結果
舉例
if 3 > 2: print(666)
執行輸出
666
第二種結構
if 條件: 結果else: 結果
舉例
if 3 > 2: print(666)else: print(333)
執行輸出
666
第三種結構
if 條件1: 結果1elif 條件2: 結果2elif 條件3: 結果3
舉例
choice = input('請輸入你猜的數字:')if choice == '2': print('我請你吃飯')elif choice == '6': print('免一周作業')elif choice == '3': print('一起去玩耍')
執行輸出
第4種結構
if 條件1: 結果1elif 條件2: 結果2elif 條件3: 結果3else: 結果4
舉例
choice = input('請輸入你猜的數字:')if choice == '2': print('我請你吃飯')elif choice == '6': print('免一周作業')elif choice == '3': print('一起去玩耍')else: print('輸入錯誤')
執行輸出
== 表示做比較
= 表示賦值
第5種結構
if 條件: if 條件: 結果 else: 結果else: 結果
只要需求存在,就可以一直嵌套if
舉例
age = int(input('請猜我的年齡:'))if True: if age == 18: print('恭喜你猜對了') else: print('這都看不出來...')else: print('輸入錯誤')
執行輸出
字串之間不能比較大小,只能比較相等
int ---> str str(12) 轉換成字串,使用str()
str ---> int int(12) 全部由數字組成的字串才能轉化為數字
十二、while迴圈
用來執行重複的代碼
while True: print('癢') print('涼涼') print('體面') print('社會搖')
執行輸出
癢
涼涼
體面
社會搖
...
while True 代表死迴圈
另外一個例子
print(222)while True: print(111) print(333)print(444)
執行輸出
222
111
333
111
333
....
444永遠不會執行
跳出迴圈的條件:
1.改變條件
2.breck
標誌位flag
從1列印到100
#標誌位flag = True#初始值count = 1while flag: #第一次,列印初始值。之後列印自增值 print(count) #迴圈一次,自增1 count = count + 1 #當等於100時,迴圈終止 if count == 100: #列印100 print(count) flag = False
執行輸出
1
2
3
...
100
第2種寫法
#初始值count = 1while count < 101: #第一次,列印初始值。之後列印自增值 print(count) #迴圈一次,自增1 count = count + 1
執行輸出,效果同上
breck:結束迴圈
while True: print(111) print(222) break print(333)
執行輸出
111
222
遇到breck,終止迴圈,下面的代碼不執行
continue:結束本次迴圈,繼續下一次迴圈。
continue 相當於見底了
while True: print(111) print(222) continue print(333)
執行輸出
111
222
....
333永遠不會執行,為什麼呢?遇到continue時,下面代碼不執行,繼續執行下一次迴圈,由於迴圈無法終止,所以最後一行代碼,始終不會執行。
使用breck方式,列印1到100
#初始值count = 1while True: #第一次,列印初始值。之後列印自增值 print(count) #迴圈一次,自增1 count = count + 1 if count == 101: break 執行輸出1到100
執行輸出1到100
十三、相關練習題
1、使用while迴圈輸入 1 2 3 4 5 6 8 9 10
2、求1-100的所有數的和
3、輸出 1-100 內的所有奇數
4、輸出 1-100 內的所有偶數
5、求1-2+3-4+5 ... 99的所有數的和
6、使用者登陸(三次機會重試)
習題分析:
1、使用while迴圈輸入 1 2 3 4 5 6 8 9 10
觀察題目,發現1~10,少了一個數字7
思路如下:
1.先輸出1~10
#初始值count = 0while count < 10: count = count + 1 print(count)
執行輸出1~10
2.遇到7的時候,不執行print()就可以了
如果直接用breck,那麼迴圈就終止了。這個時候,需要用到continue了
最終代碼如下:
#初始值count = 0while count < 10: #自增1 count = count + 1 #判斷為7時,終止此次迴圈,繼續下一次迴圈 if count == 7: continue print(count)
執行輸出
1
2
3
4
5
6
8
9
10
2、求1-100的所有數的和
思路如下:
1.先輸出1~100
#初始值count = 0while count < 100: #自增1 count = count + 1 print(count)
2.需要定義一個總和變數the_sum,每次要向前推進加數字,就比如吃豆遊戲一樣
#初始值count = 0#總和的初始值the_sum = 0while count < 100: #自增1 count = count + 1 the_sum = the_sum + count print(the_sum)print(the_sum)
執行輸出
1
3
6
...
5050
上面的代碼,我把每次相加的結果給列印出來了。
0+1+2+3+....+100
計算過程是從左至右的,0+1=1,再計算1+2=3,再計算3+3=6....
解釋一下代碼執行過程
第一次count=0,the_sum=0 執行到第7行時,count=1,那麼the_sum結果1,所以輸出1
第二次count=1(因為whlie迴圈會迭代),執行到第7行時,count=2(1+1=2),那麼the_sum的結果為3。因為第一次the_sum的值為1,所以這裡為1+2=3
第三次,count=2,執行到第7行時,count=3,那麼the_sum的結果為6(3+3=6)
所以最終結果為4950+100=5050
3、輸出 1-100 內的所有奇數
先來介紹求奇數和偶數的方法
用數字和2整除,取餘 %
等於1為奇數
等於0為偶數
思路和第2題類似
1.先輸出1~100
#初始值count = 0while count < 100: #自增1 count = count + 1 print(count)
執行輸出1~100
2.用count和2整除取餘,如果為1,輸出數字,否則不輸出
#初始值count = 0while count < 100: #自增1 count = count + 1 #取餘,和2整除 yushu = count % 2
#為1表示奇數 if yushu == 1: print(count)
執行輸出
1
3
5
...
99
4、輸出 1-100 內的所有偶數
方法和第3題類似,把取餘部分修改一下
#初始值count = 0while count < 100: #自增1 count = count + 1 #取餘,和2整除 yushu = count % 2 #為0表示偶數 if yushu == 0: print(count)
執行輸出
2
4
6
...
100
5、求1-2+3-4+5 ... 99的所有數的和
從這個公式可以發現出規律
為偶數的是做減法
為奇數的是做加法
思路:
在第二個題目基礎上來做,第二個是1到100的求和
1.先把第2題的代碼貼過來
2.在此基礎上做一下稍微的改動,最終代碼如下:
# 初始值count = 0#計算最終值的初始值final_value = 0while count < 99: #自增1 count = count + 1 #取餘,和2整除 yushu = count % 2 # 為1表示奇數 if yushu == 1: # 做加法運算 final_value = final_value + count print(final_value) # 偶數 else: # 做減法運算 final_value = final_value - count print(final_value)print(final_value)
執行輸出
1
-1
2
...
50
最終結果為50
注意: 這裡最後一個數字是99,而不是100,所以是while count < 99
上面的代碼,我把每次計算的結果給列印出來了。
0+1-2+3-4....+99
計算過程是從左至右的,0+1=1,再計算1-2=-1,再計算-1+3=2....
解釋一下代碼執行過程
第一次count=0,final_value=0,執行到第7行時,count=1。做取餘計算 1 / 2,結果為1。
if判斷等於1,結果成立,所以為奇數。計算等式final_value + count 也就是0+1=1,輸出1
第二次count=1,final_value=1,執行到第7行時,count=2。做取餘計算 2 / 2,結果為0。
if判斷等於1,結果不成立,所以為偶數。計算等式final_value - count 也就是1-2=-1,輸出-1
第三次count=2,final_value=-1,執行到第7行時,count=3。做取餘計算 3 / 2,結果為1。
if判斷等於1,結果成立,所以為奇數。計算等式final_value + count 也就是-1+3=2,輸出2
所以最終結果為-49+99=50
6、使用者登陸(三次機會重試)
思路
1.先來做簡單的登入驗證
username = input('請輸入使用者名稱:')password = input('請輸入密碼:')if username == "xiao" and password == '123': print('ok')else: print('登入失敗超過三次,請稍後重試!')
2.用while迴圈來執行輸入框,可以無限次嘗試登入
while True: username = input('請輸入使用者名稱:') password = input('請輸入密碼:') if username == "xiao" and password == '123': print('ok') else: print('登入失敗超過三次,請稍後重試!')
3.做一個變數用來記錄登入失敗次數,初始為0,如果登入失敗,次數加1。達到3次,直接結束程式。
#登入次數logins = 0while True:
#判斷登入次數 if logins == 3: print('登入失敗超過三次,請稍後重試!') break username = input('請輸入使用者名稱:') password = input('請輸入密碼:')
#判斷使用者名稱和密碼 if username == "xiao" and password == '123': print('ok') else:
#次數加1 logins += 1 print('登入失敗!')
執行輸出