python-day1
目錄:
- python簡介
- python安裝與執行
- pycharm簡單設置及使用
- 注釋使用及.pyc文件
- python變量
- python用戶交互(輸入輸出)
- if條件語句
- 循環語句(while & for)
- 運算符
- python數據類型初識(int,bool,str,list,dict)
?
一、python簡介:
python的創始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節期間,吉多·范羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。
python的目前應用領域:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域
python的目前公司常用領域:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。
使用python的公司:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等
ps:有上可知,python正越來越受到程序員們的廣泛認可,那python的優勢在哪里呢?
?
1、python和其他語言對比:
a.C 和 Python、GO、Java、C#等
C語言: 代碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作
其他語言: 代碼編譯得到 字節碼 ,虛擬機執行字節碼并轉換成機器碼再后在處理器上執行
b.Python 和 C ?Python這門語言是由C開發而來
對于使用:Python的類庫齊全并且使用簡潔,如果要實現同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.
對于速度:Python的運行速度相較與C,絕逼是慢了
c.python和GO語言
對于使用:Go語言是未來的語言,它屬于編譯型(有關解釋型語言和編譯型語言解釋,注1)語言,作為新型的語言,網絡傳輸方面目前所有語言第一,就是語法基礎等方面還有待于完善。
對于速度:?與C相當,很牛逼的語言,身為小白的我,坐等它的成熟。
d.Python 和 Java、C#等
對于使用:Linux原裝Python,其他語言沒有;以上幾門語言都有非常豐富的類庫支持
對于速度:Python在速度上可能稍顯遜色
ps.所以,Python和其他語言沒有什么本質區別,其他區別在于:擅長某領域、人才豐富、先入為主。
?
2、python的種類:
a.CPython:
Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然后運行在Python虛擬機上。目前我們建議使用3.5版本。
解釋器:CPython。為C語言開發
運行方式:命令行下使用python命令直接運行。
b.pypy:
Python實現的Python,pypy采用JIT技術,將Python的字節碼字節碼再編譯成機器碼。其目的就是一次編譯所有py變為pyc,直接調用加快程序調用速度。
解釋器:pypy。
運行方式:命令行下使用pypy命令運行
c.其他Python:
-
- Jyhton:
Jython是運行在java平臺上的python解釋器,可以直接把python代碼編譯成java字節碼執行。
- IronPython:
IronPython和Jython類似,只不過IronPython是運行在微軟.net平臺上的python解釋器。可以直接把python代碼編譯成.net字節碼執行。
- Jyhton:
-
- RubyPython、Brython ..?
ps.所以目前python對于所有主流語言都有很好的兼容,雖然如此,如果要和java或.net等平臺交互,最好的方式還是通過網絡調用交互,以此確保各各程序之間的獨立性。
ps.PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提升執行速度!
?
二、 python安裝與執行
前面說了這么多,下面開始正式學習python了。
1、安裝:
1、下載安裝包
https://www.python.org/downloads/
2、安裝
默認安裝路徑:C:\python27
3、配置環境變量
【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
2.linux安裝
查看默認Python版本
python -V
1、安裝gcc,用于編譯Python源碼
yum install gcc
2、下載源碼包,https://www.python.org/ftp/python/
3、解壓并進入源碼文件
4、編譯安裝
./configure
make all
make install
5、查看版本
/usr/local/bin/python2.7 -V
6、修改默認Python版本
mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
7、防止yum執行異常,修改yum使用的Python版本
vi /usr/bin/yum
將頭部 #!/usr/bin/python 修改為 #!/usr/bin/python2.6
2、Hello world!程序
? a.創建helloworld.py文件(pyhton程序,一般為.py結尾)
#!/usr/bin/env python
#解釋器調用路徑
# -*- coding:utf-8 -*-
#聲明解釋器編碼
#程序執行
print('hello world!')
?b.執行方式
-
- windows
- "D:\Program Files\Python35\python.exe" ?helloword.py ? #直接文件執行(以后運行程序多為此方式)
- "D:\Program Files\Python35\python.exe" ?#進入解釋器執行print('helloword!')
- linux ?
- python helloword.py ? #直接文件執行(以后運行程序多為此方式)
- ptyhon ? ? ? ? ? ? #進入解釋器執行print('helloword!')
- windows
ps.文件頭部要加#!/user/bin/evn python及chmod +x helloword.py
然后./helloword.py實行。
3、編碼格式(作用:聲明編碼格式)
可以讓計算機直接認識的語言,其實只有匯編語言,即0和1的代碼。且計算機是美國人發明的,因此,最早只有英文加特殊字符共127位字母與0和1代碼進行一一對應。而美國人覺得夠用了2^7 = 128不夠他們擴展的,所以采用2^8 =256的內存空間(單位為‘字節’, 即256字節),夠美國人用的了。
這就是最早的編碼ASCII碼。顯然,256位字符不夠中文用的,中國人也想用,怎么辦呢?顯然聰明的中國人想到了辦法,通過在做一張新的表并把新表通過取ASCII碼的幾位映射到ASCII碼中使用。這就是GBK。有21003字符,2字節一個漢字。
全世界人民都想使用電腦,于是個個國家的編碼應運而生,日本shift_JTS,韓國EUC-kr等等。中國身為共產主義多民族國家,不能只搞漢語啊,體現民族平等嘛,于是把滿文,回文等等的文字也寫了新的編碼GB2312.有27484字,2字節一個漢字
? ?國際標準組織一看,世界居然為了編碼亂搞,沖突不斷,亂碼叢生。因此unicode誕生了,把所有語言統一到一個字符編碼中,unicode也因此被稱為萬國碼。最少用2個字節表示1個字符。
? ?這時,美國不干了,為什么我建立的計算機,被你們亂改一通,最后我一個字符搞定的事,被你們改成了2個字符,我本來存100MB的東西,莫名其妙變成了200MB。不行,于是utf-8誕生了,utf-8是對uniccode的優化壓縮。英文字符占1個字符,歐洲字符占2個字符,中文占3個字符……, 故utf-8又稱可變字符編碼。
ps.字符編碼總結:
| 編碼名 | 占用字節(1中文字符) | python版本(默認) |
| ASCII | 沒有中文 | python2 |
| GBK | 2個字節 | 無 |
| unciode | 3個字節 | 無 |
| utf-8 | 3個字節 | python3 |
ps.二進制換算:
-
- 最小計算機表示單位為bit(位)
- 8bit = 1byte(字節,最小存儲字節)
- 1024byte = 1MB(兆) ?MB--〉GB--〉TB --〉PB
三、pycharm簡單設置及使用
? 1、使用:
a、創建項目:file ---> new project
b、新建文件夾:右擊要創建文件夾的項目或上級目錄?----〉new ---〉directory?
c、新建文件:右擊要創建文件夾的項目或上級目錄?----〉new ---〉file
d、運行文件:要執行的.py文件內容---〉右擊---〉run xx.py
?2、文件編碼:
file ---->default settings --->editor --->file encodings
?3、程序文件模版:
file ---->default settings --->editor --->file and code templates?
?4、改變字體大小:
file ----〉settings ----〉editor ---> General ---〉mouse
四、注釋使用及.pyc文件
1、python文件注釋:
# 單行注釋
''' '''' 多行注釋
? ? ?2、.pyc文件:
.pyc文件存儲的是介于0101計算機語言和我們寫的文件之間的語言。是有python解釋器根據我們編寫的代碼自動生成的文件。具體可查看, 注1
五、python變量(初識)
1、變量命名規則:
a.字母
b.數字(不能開頭)
c.下劃線
? ps.硬性規定,命名必須是字母,數字,下劃線,且不能以數字開頭。
軟性規則,以下劃線分割
2、實例:
a.寫法: age_of_oldboy = 60
b.命名潛規則:age_of_oldboy 普通變量
Age_of_oldboy ?首字母大寫,一般為類
AGE_OF_OLDBOY 一般為常量寫法
六、python用戶交互(輸入輸出):
1、輸入
v = input('>>>')?
import getpass
v = input('>>>')
2、輸出
print('input', v)
3、實例:
'''
輸入,輸出
'''
#輸入終端隱藏,pycharm不好使
import getpass
#正常輸入,顯示
name = input('name:')
password = getpass.getpass('password:')
age = 18
#正常輸出
print(name, password, age)
七、if條件語句
1、if...else...結構
a.含義:
if 條件:
條件成功,執行
else:
條件失敗,執行
b.實例:
#!/usr/bin/python#-*- coding:utf-8 -*-
## 用戶登陸(三次機會重試)
user="tianyou.zhu"
password="tianyou123"
for i in range(3):
user_input= input("請輸入你的名字:")
pass_input=input("請輸入你的密碼:")
if user_input ==user and pass_input==password:
print ("登陸成功")
break
else:
print ("登陸失敗,請重新輸入")
2、if ...elif ... else ...結構
a.含義:
if 條件:
if條件成功,執行
elif 條件:
elif條件成功,執行
elif 條件:
elif條件成功,執行
....
else:
上述條件都失敗,執行
b.實例:
username = input('>>>')
if username == 'tianyou.zhu':
print('普通管理')
elif username == 'a':
print('超級管理')
elif username == 'b':
print('人')
elif username == 'c':
print('裝逼犯')
else:
print('再見...')
print('end')
八、循環語句(while & for)
1、while循環
a.結構
while 條件:
continue #立即執行下一個循環
break ?#跳出當前while的所有循環
else: #while條件不成立執行
b.實例1:1,2,3,4,5,6, 8, 9, 10 打印
#!/usr/bin/python#-*- coding:utf-8 -*-
#1、使用while循環輸入 1 2 3 4 5 6 8 9 10
#i=1
#while True:
# if i ==7:
# i=i+1
# continue
# print (i)
# i= i +1
# if i == 11:
# break
for i in range(11):
if i==7:
continue
print (i)
c.實例2:while 計算1到100的和 #!/usr/bin/python
#-*- coding:utf-8 -*-
#求1-100的所有數的和
val = 0
i=1
while i<101:
val = val+i
i= i +1
print (val)
a = 0
b = 1
for i in range(100):
a =a+b
b=b+1
print (a)
d.實例3:求1-2+3-4+5 ... 99的所有數的和 #!/usr/bin/python
#-*- coding:utf-8 -*-
#5、求1-2+3-4+5 ... 99的所有數的和
#value = 0
#i = 1
#while i<100:
# if i % 2 == 1:
# # value = value + i
# value += i
# else:
# # value = value - i
# value -= i
# i += 1 # i = i + 1
#print(value)
e.實例4:用戶登陸(三次機會重試) #!/usr/bin/python
#-*- coding:utf-8 -*-
## 用戶登陸(三次機會重試)
user="tianyou.zhu"
password="tianyou123"
for i in range(3):
user_input= input("請輸入你的名字:")
pass_input=input("請輸入你的密碼:")
if user_input ==user and pass_input==password:
print ("登陸成功")
break
else:
print ("登陸失敗,請重新輸入")
九、運算符
? 1、算術運算符:
2、比較運算:
3、賦值運算:
4、邏輯運算:
5、成員運算:
6、身份運算:
7、位運算:
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c
c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c
c = a ^ b; # 49 = 0011 0001 #相同為0,不同為1
print "Line 3 - Value of c is ", c
c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c
c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c
c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c
補充要點:
a. i += 1 等同于 i = i + 1。同理*= -= 等賦值運算符都為該系列。
b.?邏輯運算,從左往右一個一個看,先算()內的數值。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
邏輯運算
'''
#1正確
if 1 == 1 or 1 > 2 and 1 == 4:
print('正確')
else:
print('錯誤')
#2錯誤
if 1 == 1 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯誤')
#3錯誤
if 1 == 0 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯誤')
#4錯誤
if 1 == 0 and (1 < 2 or 1 == 4):
print('正確')
else:
print('錯誤')
#5錯誤
if 1 == 0 and 1 > 2 or 1 == 4:
print('正確')
else:
print('錯誤')
c.成員運算
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
成員運算符
'''
content = "Alex 前幾天去泰國玩姑娘,一不小心染上了病,他的內心活動是,真該多來幾個"
if "前幾天去" in content:
print('包含敏感字符')
else:
print(content)
十、python數據類型初識(int,bool,str,list,dict)
type()查看變量類型。
1、int(整形)
a.創建
b.轉換
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
int(整形)
a.創建
b.轉換
'''
#創建
age = 19
age1 = int(19)
print(age,age1)
#轉換
age2 = '19'
print(type(age2))
#isdigit()判斷是否是一個數字,int()只能轉數字,不能轉字母、中文等。會報錯
if age2.isdigit(age2):
int(age2)
print(('tpye:%s age2:%d') % (type(age2), age2))
?
2、bool(布爾值)
a.創建
b.轉換
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
bool(布爾值)
a.創建
b.轉換
'''
#創建
a = True
b = False
#轉換
#數字轉換,只有0是False,其他True
#字符串, 只有""是False,其他True
#其他,待續……
a1 = 0
a2 = 100
a3 = -100
a1_bool = bool(a1)
a2_bool = bool(a2)
a3_bool = bool(a3)
print('a1 %s:%s bool_type:%s'%(a1,a1_bool, type(a1_bool)))
print('a2 %s:%s bool_type:%s'%(a2,a2_bool, type(a1_bool)))
print('a3 %s:%s bool_type:%s'%(a3,a2_bool, type(a1_bool)))
b1 = ''
b2 = 'fafa'
b3 = 'AFSD@'
b1_bool = bool(b1)
b2_bool = bool(b2)
b3_bool = bool(b3)
print('b1 %s:%s bool_type:%s'%(b1,b1_bool, type(a1_bool)))
print('b2 %s:%s bool_type:%s'%(b2,b2_bool, type(a1_bool)))
print('b3 %s:%s bool_type:%s'%(b3,b3_bool, type(a1_bool)))
'''
結果:
a1 0:False bool_type:<class 'bool'>
a2 100:True bool_type:<class 'bool'>
a3 -100:True bool_type:<class 'bool'>
b1 :False bool_type:<class 'bool'>
b2 fafa:True bool_type:<class 'bool'>
b3 AFSD@:True bool_type:<class 'bool'>
'''
?
3、str(字符串)
a.創建
b.轉換
c.拼接
d.格式化
e.是否在子序列中
f.移除空白.strip()
g.分割.split('分割符',步長)
h.長度len()
i.索引[]
j.切片[開始:結束:步長]
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
str(字符串)
a.創建 b.轉換 c.拼接 d.格式化 e.是否在子序列中 f.移除空白
g.分割 h.長度 i.索引 j.切片
'''
#創建
name = 'tianyou.zhu'
name1 = str('tianyou.zhu')
print('name: %s tpye:%s \n name1:%s tpye:%s\n' %(name,type(name),name1,type(name1)))
#轉換
age = 19
age_str = str(age)
print('age_str:%s tpye:%s' % (age, age_str))
#字符串拼接
name2 = 'alex'
gender = '女'
new_str = name2 + gender
print(new_str)
#字符串格式化,使用占位符%s(待續...)
name3 = '我叫李杰,性別:%s,我今年%s歲,我在說謊!'
new_str2 = name3 %('男',19,)
print(new_str2)
name4 = '我叫李杰,性別:%s,我今年%s歲,我在說謊!' %('男',19)
print(name4)
#判斷子序列是否在其中
content = "Alex 前幾天去泰國玩姑娘,一不小心染上了病,他的內心活動是,真該多來幾個"
if "前幾天去" in content:
print('包含敏感字符')
else:
print(content)
#移除空白
val = " alex "
print(val)
new_val = val.strip() # 左右去
# new_val = val.lstrip()# 左邊去
# new_val = val.rstrip() # 右邊去
print(new_val)
#分割.split('分隔符',步長)
user_info = "alex|sb123|9"
v = user_info.split('|')
# v = user_info.split('|',1)
# v = user_info.rsplit('|',1) #右分割
# v = user_info.lsplit('|',1) #左分割
print(v)
#長度(字符)python2,中文按2字節算,python按,中文按1字符算
val = "李杰nb"
v = len(val)
print(v)
'''
結果:
4
'''
#索引
val = "李杰mb"
v = val[0]
print(v)
val = input('>>>')
i = 0
while i < len(val):
print(val[i])
i += 1
'''
輸入:dd
結果:
d
d
'''
#切片
name = '我叫李杰,性別我今年歲,我在說謊!'
print(name[0])
print(name[0:2])
print(name[3:9])
print(name[7:])
print(name[4:-2])
print(name[-2:])
'''
結果:
我
我叫
杰,性別我今
我今年歲,我在說謊!
,性別我今年歲,我在說
謊!
'''
4、list(列表)
a.創建
b.in判斷
c.索引[]
d.追加.append()
e.插入.insert()
f.刪除del .remove()
g.更新
h.輸出
i.長度len()
j.切片[開始:結束:步長]
創建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])
in判斷:
if 'al' in a:
pass
if 'al' in a[0]:
pass
索引:
val = a[0]
長度:
val = len(a)
切片:
a = ['alex','狗','eric',123]
v = a[0::2]
print(v)
追加:
a = ['alex','狗','eric',123]
a.append('xxoo')
print(a)
插入:
a = ['alex','狗','eric',123]
a.insert(0,'牛')
print(a)
刪除:
a = ['alex','eric','狗','eric',123]
# a.remove('eric')
del a[0]
print(a)
更新:
a = ['alex','eric','狗','eric',123]
a[1] = '阿斯頓發送到'
print(a)
For循環:
a = ['alex','eric','狗','eric',123]
for item in a:
print(item)
# break
# continue
5、dict(字典)
a.創建
b.索引
c.增加&更新
d.刪除
e.輸出
- 創建
v = {
'name': 'alex',
'password': '123123'
}
# 常用操作
# 索引獲取值
# n = v['name']
# print(n)
# 增加,無,增加;有,修改
# v['age'] = 19
# print(v)
# 刪除
# del v['name']
# print(v)
# 循環
# for item in v.keys():
# print(item)
# for item in v.values():
# print(item)
# for key,val in v.items():
# print(key,val)
print(len(user_dict))
PS: 相互嵌套
user_dict = {
'k1': 'v1',
'k2': {'kk1':'vv1','kk2':'vv2'},
'k3': 123,
'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}],
}
user_dict['k4'][2].append('123')
user_dict['k4'][4]['n'] = '過啥龍'
應用:
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
{'name':'tony','pwd':'123123','times':1},
]
user = input('用戶名:')
pwd = input('密碼:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登錄成功')
break
list & dict嵌套
a.實例1:相互嵌套
#!/usr/bin/env python2 # -*- coding:utf-8 -*-3 4 5 '''6 dict&list相互嵌套實例17 '''8 9 user_dict = { 10 'k1': 'v1', 11 'k2':{'kk1':'vv1', 'kk2':'vv2'}, 12 'k3':123, 13 'k4':[ 'jack', ['a', 'b', 'c'], '李杰',{'k1':'v1'}] 14 } 15 print('dict: %s' % user_dict) 16 17 #添加dict --〉 list的元素 18 user_dict['k4'][2].append('123') 19 print('add_dict_list: %s' % user_dict) 20 21 #添加dict ---〉 dict的元素 22 user_dict['k4'][4]['k2'] = 'v1' 23 print('add_dict_dict: %s' % user_dict)
b.實例2:多用戶密碼登陸
#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
dict_list多用戶登陸
'''
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
]
user = input('用戶名:')
pwd = input('密碼:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登錄成功')
1、注解1:
a.?解釋型語言和編譯型語言
?計算機是不能夠識別高級語言的,所以當我們運行一個高級語言程序的時候,就需要一個“翻譯機”來從事把高級語言轉變成計算機能讀懂的機器語言的過程。這個過程分成兩類,第一種是編譯,第二種是解釋。
編譯型語言在程序執行之前,先會通過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不需要翻譯,而直接執行就可以了。最典型的例子就是C語言。
解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,通過解釋器對程序逐行作出解釋,然后直接運行,最典型的例子是Ruby。
?通過以上的例子,我們可以來總結一下解釋型語言和編譯型語言的優缺點,因為編譯型語言在程序運行之前就已經對程序做出了“翻譯”,所以在運行時就少掉了“翻譯”的過程,所以效率比較高。但是我們也不能一概而論,一些解釋型語言也可以通過解釋器的優化來在對程序做出翻譯時對整個程序做出優化,從而在效率上超過編譯型語言。
此外,隨著Java等基于虛擬機的語言的興起,我們又不能把語言純粹地分成解釋型和編譯型這兩種。
用Java來舉例,Java首先是通過編譯器編譯成字節碼文件,然后在運行時通過解釋器給解釋成機器文件。所以我們說Java是一種先編譯后解釋的語言。
b.圖例:
c.編譯型vs解釋型
編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之后如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。
解釋型
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
?
? d.更多解釋詳見
http://www.cnblogs.com/alex3714/articles/5465198.html
http://www.cnblogs.com/wupeiqi/articles
?
轉載于:https://www.cnblogs.com/you0329/p/6761569.html
總結
以上是生活随笔為你收集整理的python-day1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 04 基础
- 下一篇: numpy函数:[6]arange()详