python的出生與應用
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆(中文名字:龜叔)爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。java
目前Python主要應用領域:python
cpu:linux
至關於人的大腦,運算與控制中心。
速度 飛機
內存:暫c++
時存儲,供給CPU數據。
速度 高鐵。成本高,斷電即消失。
硬盤:數據庫
至關於電腦的數據庫,存儲着大量的數據,文件,音頻文件。
速度 走。成本低
操做系統:windows
執行者,支配全部關係。windows,linux,mac...框架
python流行的緣由
1.大量第三方庫
2.Diango運維
Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。
python 2x和3x在同一年誕生,2x是10月,3是12月
python 2x:源碼混亂,重複代碼較多,冗餘。
python 3x: 源碼規範,崇尚優美、清晰,簡單python2.7
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代碼的規則仍是統一的。
若是想要windows電腦同時有2個python環境,Python2.7和Python3.5
先安裝python2.7
一、下載安裝包
https://www.python.org/downloads/
二、安裝
默認安裝路徑:C:\python27
勾選添加環境變量
再安裝python3.5
選擇自定義安裝,勾選添加環境變量
安裝路徑設置爲C:\Python35
進入目錄C:\Python27
將python.exe更改成python2.exe
打開windows命令行模式
輸入python2就是2.7版本
輸入python就是3.5版本
新建一個test.py文件,內容以下
print('你好,世界')
使用命令行方式
個人代碼路徑在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 = 56 NumberOfStudents = 100 #下劃線 age_of_oldboy = 56 number_of_students = 80
通常推薦使用第2種,也就是下劃線的方式。
下面幾個例子,判斷變量名是否合法
w__ = 22 e_a_ = '太白' e$ = 'fdsa' -_ = '15' 2g = 33 __ = '老村長'
3,4,5行的變量,是不合法的,其餘的都是合法的。
賦值計算
先計算等號右邊的,把計算的值賦值給左邊的
python是解釋型語言,代碼是一行一行執行
後面的變量會覆蓋前面的。
age1 = 12 age2 = age1 age3 = age2 age2 = 6 print(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 + n2 print(n3)
執行輸出
她的名字是南宮紫菱
相乘
n1 = '我好愛你!' print(n1 * 3)
執行輸出
我好愛你!我好愛你!我好愛你!
布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷
print(1 > 2)
執行輸出
False
返回false
布爾值是不帶引號的
print(1 > 2 and 3 < 4 or 4 > 5)
執行輸出
False
布爾值判斷時,若是出現false,結果返回false
使用type()方法
n1 = 'nan' n2 = False n3 = 'False' print(type(n1)) print(type(n2)) print(type(n3))
執行輸出
<class 'str'>
<class 'bool'>
<class 'str'>
input出來的數據類型,都是字符串
name = input('請輸入你的名字: ') age = input('請輸入你的年齡: ') hobby = input('請輸入你的愛好: ') s = '個人名字是' + name + '\n個人年齡是' + age + '\n個人愛好是' + hobby print(s)
執行效果
第一種結構
if 條件: 結果
舉例
if 3 > 2: print(666)
執行輸出
666
第二種結構
if 條件: 結果 else: 結果
舉例
if 3 > 2: print(666) else: print(333)
執行輸出
666
第三種結構
if 條件1: 結果1 elif 條件2: 結果2 elif 條件3: 結果3
舉例
choice = input('請輸入你猜的數字:') if choice == '2': print('我請你吃飯') elif choice == '6': print('免一週做業') elif choice == '3': print('一塊兒去玩耍')
執行輸出
第4種結構
if 條件1: 結果1 elif 條件2: 結果2 elif 條件3: 結果3 else: 結果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 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 = 1 while flag: #第一次,打印初始值。以後打印自增值 print(count) #循環一次,自增1 count = count + 1 #當等於100時,循環終止 if count == 100: #打印100 print(count) flag = False
執行輸出
1
2
3
...
100
第2種寫法
#初始值 count = 1 while 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 = 1 while True: #第一次,打印初始值。以後打印自增值 print(count) #循環一次,自增1 count = count + 1 if count == 101: break 執行輸出1到100
執行輸出1到100
一、使用while循環輸入 1 2 3 4 5 6 8 9 10
二、求1-100的全部數的和
三、輸出 1-100 內的全部奇數
四、輸出 1-100 內的全部偶數
五、求1-2+3-4+5 ... 99的全部數的和
六、用戶登錄(三次機會重試)
習題分析:
一、使用while循環輸入 1 2 3 4 5 6 8 9 10
觀察題目,發現1~10,少了一個數字7
思路以下:
1.先輸出1~10
#初始值 count = 0 while count < 10: count = count + 1 print(count)
執行輸出1~10
2.遇到7的時候,不執行print()就能夠了
若是直接用breck,那麼循環就終止了。這個時候,須要用到continue了
最終代碼以下:
#初始值 count = 0 while count < 10: #自增1 count = count + 1 #判斷爲7時,終止這次循環,繼續下一次循環 if count == 7: continue print(count)
執行輸出
1
2
3
4
5
6
8
9
10
二、求1-100的全部數的和
思路以下:
1.先輸出1~100
#初始值 count = 0 while count < 100: #自增1 count = count + 1 print(count)
2.須要定義一個總和變量the_sum,每次要向前推動加數字,就好比吃豆遊戲同樣
#初始值 count = 0 #總和的初始值 the_sum = 0 while 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
三、輸出 1-100 內的全部奇數
先來介紹求奇數和偶數的方法
用數字和2整除,取餘 %
等於1爲奇數
等於0爲偶數
思路和第2題相似
1.先輸出1~100
#初始值 count = 0 while count < 100: #自增1 count = count + 1 print(count)
執行輸出1~100
2.用count和2整除取餘,若是爲1,輸出數字,不然不輸出
#初始值 count = 0 while count < 100: #自增1 count = count + 1 #取餘,和2整除 yushu = count % 2 #爲1表示奇數 if yushu == 1: print(count)
執行輸出
1
3
5
...
99
四、輸出 1-100 內的全部偶數
方法和第3題相似,把取餘部分修改一下
#初始值 count = 0 while count < 100: #自增1 count = count + 1 #取餘,和2整除 yushu = count % 2 #爲0表示偶數 if yushu == 0: print(count)
執行輸出
2
4
6
...
100
五、求1-2+3-4+5 ... 99的全部數的和
從這個公式能夠發現出規律
爲偶數的是作減法
爲奇數的是作加法
思路:
在第二個題目基礎上來作,第二個是1到100的求和
1.先把第2題的代碼貼過來
2.在此基礎上作一下稍微的改動,最終代碼以下:
# 初始值 count = 0 #計算最終值的初始值 final_value = 0 while 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
六、用戶登錄(三次機會重試)
思路
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 = 0 while True: #判斷登陸次數 if logins == 3: print('登陸失敗超過三次,請稍後重試!') break username = input('請輸入用戶名:') password = input('請輸入密碼:') #判斷用戶名和密碼 if username == "xiao" and password == '123': print('ok') break else: #次數加1 logins += 1 print('登陸失敗!')
執行輸出