Python简介及入门
計算機原理基礎
前提: 簡述 cpu 內存 硬盤 操作系統 應用程序 cpu: 計算機的運算核心和控制核心,就好像人類的'大腦'。 內存: 負責數據與cpu直接數據交流處理,將臨時數據和應用程序加載到內存,然后交由cpu處理。4g,8g,16g,32g造價高,斷電即消失 硬盤: 磁盤(d盤,e盤)長久的存儲數據:文件,應用程序。片二等數據,斷電不消失 操作系統: 控制調度 硬件與軟件資源額計算機程序,它是計算機最大的軟件一、Python的由來
python的創始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節期間,吉多·范羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。??
最新的TIOBE排行榜,Python重回前三
由上圖可見,Python整體呈上升趨勢,反映出Python應用越來越廣泛并且也逐漸得到業內的認可!!!
Python可以應用于眾多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司廣泛使用Python來做的事一般有:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。
1.為什么是Python而不是其他語言?
C 和 Python、Java、C#等C語言: 代碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作其他語言: 代碼編譯得到 字節碼 ,虛擬機執行字節碼并轉換成機器碼再后在處理器上執行Python 和 C Python這門語言是由C開發而來對于使用:Python的類庫齊全并且使用簡潔,如果要實現同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.對于速度:Python的運行速度相較與C,絕逼是慢了Python 和 Java、C#等對于使用:Linux原裝Python,其他語言沒有;以上幾門語言都有非常豐富的類庫支持對于速度:Python在速度上可能稍顯遜色所以,Python和其他語言沒有什么本質區別,其他區別在于:擅長某領域、人才豐富、先入為主。
2.Python的種類
CpythonPython的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然后運行在Python虛擬機上。 JyhtonPython的Java實現,Jython會將Python代碼動態編譯成Java字節碼,然后在JVM上運行。 IronPythonPython的C#實現,IronPython將Python代碼編譯成C#字節碼,然后在CLR上運行。(與Jython類似) PyPy(特殊)Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。 RubyPython、Brython …3.python的語言分類
解釋型:將代碼一行一行的解釋成二進制,然后逐行執行。缺點:執行效率低。優點:開發效率高,可以跨平臺。代表語言:python。 編譯型:將代碼全部一次性編譯成二進制,然后在執行。缺點:開發效率低,不能跨平臺。優點:執行效率高。代表語言:C。4.python的優缺點
優點:1,優美清新簡單,入門容易,如果深入研究,可以寫出非常非常復雜的程序。2,開發效率高。3,高級語言。4,可移植性。5,可嵌入性。6,可拓展性。缺點:1,運行速度慢。2,源碼不能加密。3,由于有GIL鎖的存在,不能利用多線程。5.python2和python3的區別
源碼上的區別:pyhton2x:源碼不規范。源碼重復率較高。源碼冗余。python3x:源碼識重新整合,符合優美清晰簡單的原則。編碼方式的區別:python3x:編碼方式默認是utf-8,可以支持中文,英文。python2x:編碼方式默認是ASCII,只包含英文字母,數字,特殊字符如果想顯示中文:在首行加上# -*- encoding:utf-8 -*-。二、Python環境
1.安裝Python
windows
1.下載安裝包:官網:https://www.python.org/downloads/ 選擇對應版本的Python下載即可淘寶鏡像:https://npm.taobao.org/mirrors/python/ 2.安裝路徑:默認C盤路徑也可以選擇。比如D:/python3 3.配置環境變量不過要記得配置環境變量【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
linux
無序安裝,系統自帶
2.更新Python
windows:卸載重裝即可
3.安裝第三方包
pip install package_name? 或者 在pycharm中settings中安裝
三、Python入門
1.第一個python程序
#coding=utf-8 #-*- coding:utd-8 -*- print("hello haha") #以下代碼用來打印一個信息 # 單行注釋# 多行注釋 ''' print("hello world") print("hello world") print("hello world") print("hello world") ''' 第一個Python程序注意點:運行方式有兩種:(1)在編輯器中編輯好py文件,保存。在命令行下到當前目錄執行python 文件名.py(2)在有python編譯環境的編輯器里直接點解運行即可。如eclipse,pycharm。
Python內部執行流程
2.
?
2.pyc文件
執行Python代碼時,如果導入了其他的 .py 文件,那么,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產生的字節碼。
ps:代碼經過編譯
可以產生字節碼;字節碼通過反編譯也可以得到代碼。
3.變量的定義和使用
變量的定義name = zhangyafei #定義了一個變量,這個變量的名字叫做name,它里面存儲了一個數值zhangyafei
變量的作用:昵稱,其代指內存里某個地址中保存的內容 變量定義的規則 1.變量名只能是 字母、數字或下劃線的任意組合 2.變量名的第一個字符不能是數字 3.以下關鍵字不能聲明為變量名['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']
?
變量的賦值 score=100 #定義了一個變量,這個變量的名字叫做score,它里面存儲了一個數值100 high = 180 #單位是cm appleprice = 3.5 #蘋果的價格 元/斤 weight = 7.5 #購買的蘋果的重量 斤 money = appleprice * weight #如果money是第一次的話,那么就表示定義這個變量 money = money - 10 #如果money=xxxx不是第一次出現,那么就不是定義一個變量,而是給這個變量附上一個新的值4.輸入、輸出函數input(),print()
# -*- coding:utf-8 -*-#1.使用input獲取必要的信息 name =input("請輸入名字:") qq=input("請輸入qq:")#2.使用print來打印名片 print("="*20) print("姓名:%s"%name) print("qq:%s"%qq) print("="*20)輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
import getpassusername = input('請輸入用戶名:') pwd = getpass.getpass('請輸入密碼:') print(username,pwd)5.流程控制與縮進
需求一:用戶登錄驗證
1 # 提示輸入用戶名和密碼 2 3 # 驗證用戶名和密碼 4 # 如果錯誤,則輸出用戶名或密碼錯誤 5 # 如果成功,則輸出 歡迎,XXX! import getpassname = input('請輸入用戶名:') pwd = getpass.getpass('請輸入密碼:')if name == "zhangyafei" and pwd == "nb":print("歡迎,zhangyafei!") else:print("用戶名和密碼錯誤" View Code需求二、根據用戶輸入內容輸出其權限
1 # 根據用戶輸入內容打印其權限 2 3 # zhang --> 超級管理員 4 # chen --> 普通管理員 5 # zhao --> 業務主管 6 # 其他 --> 普通用戶 1 # -*- coding: utf8 -*- 2 3 name = input('請輸入用戶名:') 4 5 6 if name == "zhang": 7 print("超級管理員") 8 elif name == "chen": 9 print("普通管理員") 10 elif name == "zhao": 11 print("業務主管") 12 else: 13 print("普通用戶" View Code6.基本數據類型
(1)數字
2 是一個整數的例子。長整數 不過是大一些的整數。3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這里,52.3E-4表示52.3 * 10-4。(-5+4j)和(2.3-4.6j)是復數的例子。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也不會導致嚴重后果了。
float(浮點型)
浮點數用來處理實數,即帶有小數的數字。類似于C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(復數)
復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這里的x和y都是實數。 注:Python中存在小數字池:-5 ~ 257
(2)布爾值
真或假1 或 0? ? ? 詳情請看Fslse和None的區別
(3)字符串:用' xx' |"xx" | '''xx'''|"""xx"""連接的在python中叫字符串?
萬惡的字符串拼接: python中的字符串在C語言中體現為是一個字符數組,每次創建字符串時候需要在內存中開辟一塊連續的空,并且一旦需要修改字符串的話,就需要再次開辟空間,萬惡的+號每出現一次就會在內從中重新開辟一塊空間。 字符串格式化 # -*- coding: utf-8 -*- """ Created on Sat Jul 28 20:45:07 2018@author: Zhang Yafei """ """ 格式化字符串的方式 方法一(%) """ # 格式的字符串與被格式化的字符串必須一一對應,需格式化的字符串多時,容易搞混 print('hello %s, you sex is %s.' %('tab', 'boy')) # hello tab, you sex is boy. print('hello %s, you sex is %s.' %('boy', 'tab')) # hello boy, you sex is tab. # 通過字典方式格式化,哪個字符將會格式化到哪里,清晰命了 print('hello %(name)s, you sex is %(sex)s.' %{'name': 'tab', 'sex': 'boy'}) # hello tab, you sex is boy. args = {'name': 'tab', 'sex': 'boy'} print('hello %(name)s, you sex is %(sex)s.' %(args)) # hello tab, you sex is boy. #方法二(.format) # 跟方法一第一種方式有點類似的格式化方式 print('hello {0}, you sex is {1}.'.format('tab', 'boy')) # hello tab, you sex is boy. # 注意:用字典方式格式化時,指定格式化字符時的位置可以調換 print('hello {name}, you sex is {sex}.'.format(sex='boy', name='tab')) # hello tab, you sex is boy. # '**'起到解包的作用 args = {'name': 'tab', 'sex': 'boy'} print('hello {name}, you sex is {sex}.'.format(**args)) #推薦使用 .format 方法進行格式化字符串,一來清晰明了,二來效率更高(format 是字符串 # str 內置的方法)。更多關于 .format 的用法文檔,用戶可在交互模式下(終端輸入 python # or ipython or bpython ) 輸入 help(str.format) 查看 View Code 字符串常用功能:-
- 移除空白 -> strip()
- 分割 -> split()
- 長度 -> length
- 索引 -> []
- 切片 ->[:]
?(4)列表
創建列表
nums = [11,22,33,44,55]基本操作:
-
- 索引 -> [index]
- 切片 ->[start:end]
- 追加 ->append,extend
- 刪除 -> pop,remove,del
- 長度 -> len
- 循環 -> 可迭代對象?
- 包含 ->contrains
?(5)元組
創建元組
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55)) 基本操作:-
- 索引 -> [index]
- 切片 ->[start:end]
- 循環 -> 可迭代對象
- 長度 -> len
- 包含 ->contains
?(6)字典(無序)
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})常用操作:
-
- 索引 -> [index]
- 新增->dict[key]=value
- 刪除 -> del dict[key]
- 鍵、值、鍵值對 -> key,value,key:value
- 循環:可迭代對象
- 長度:len
(7)集合
a = {11,22,33,44,55,66,77}a = set(11,22,33,44,55,66,77)
常用操作:
- 新增 -> add
- 刪除 -> pop
- 交 -> &
- 去重 ->重點
- 并 -> |
- 補 -> difference
if比較運算符(<??? >?? <=? >=? !=? <>)
if 邏輯運算符 and or if not
sex = input("輸入你的性別:") if sex == "男":print("你是男性,可以留胡子") elif sex == "女":print("你是女性,不可以留胡子") else:print("你是中性,想干啥干啥") if elif #1.獲取用戶的輸入 num = int(input("輸入一個數字(1-7):"))#2. 判斷用戶的數據,并且顯示對應的信息 if num==1:print("Monday") elif num==2:print("Tuesday") elif num==3:print("Wednesday") elif num==4:print("Thursday") elif num==5:print("Friday") elif num==6:print("Saturday") elif num==7:print("sunday") else:print("您輸入的數字有誤") 判斷星期幾 #如果當前用戶是男性的話,難么就輸入判斷女性的要求 sex = input("輸入你的性別:") if sex == "男":color = input("你白嗎?") #白或者黃money = int(input("請輸入你的財產總和:")) #輸入1000beautiful = input("你美嗎?") #美 或者不美#if 白 并且 富 并且 美#if 白 and 富 and,美:if color=="白" and money>1000000 and beautiful=="美":print("白富美……")print("好羨慕……")else:print("黑窮丑……") else:print("判斷男性的要求在下面")color = input("你高嗎?") #白或者黃money = int(input("請輸入你的財產總和:")) #輸入1000beautiful = input("你帥嗎?") #美 或者不美#if 白 并且 富 并且 美#if 白 and 富 and,美:if color=="高" and money>1000000 and beautiful=="帥":print("高富帥……")print("好羨慕……")else:print("矮窮矬……") 實例:白富美
if條件總結
if 條件:xxxxif 條件:xxxxxx1 else:xxxxx2if 條件1:xxxx1 elif 條件2:xxxx2 elif 條件3:xxxx3 else: ……嵌套if 嵌套 if xxx:print("---1----")if xxx2:xxxxxxxif xxx:xxxx3 else:xxxxif xxx: elif xxx:xxxxx2 elif xxxx:xxxx2 …… else:xxxx View Code三目運算符
a = A if x>5 else B另一種寫法
a = [A,B][x<5]while 循環
num = 1while num <=10:print(num) #print("%d"%num)num=num+1while總結
while 循環while 條件:條件滿足的時候執行的事情 while 嵌套while 條件:條件滿足的時候做的事情1條件滿足的時候做的事情2。。。。while 條件2:條件2 滿足的時候做的事情。。。。while 條件:1.站起來2.坐下3.站起來while 執行5次4.轉1個圈5.坐下嵌套實例
ticket = 1 #q表示有車票 0表示沒有車票 knifeLenght = 48 #cm #先判斷是都有車票 if ticket==1:print("通過了車票的檢測,進入到了車站,接下來要安檢了")#盤DAU拿到的長度是否合法if knifeLenght<=10:print("通過了安檢,進入了候車廳")print("馬上就要見到她了,好開心……")else:print("安檢沒有通過,等待公安處理") else:print("兄弟,你還沒有買票呢,先去買票,才能進站……") 上火車 i = 1while i<=9:j = 1while j<=i:print("%d*%d=%d\t"%(j,i,i*j),end=" ")j+=1print("")i+=1 打印99乘法表for循環
for iterating_var in sequence:statements(s)sequence即可迭代對象,內部實現了__iter__方法,for循環會遍歷其中的每個值
例子
nums = [11,22,33,44,55]for num in nums:print(num)神奇的for_else
簡述英文原文
A break statement executed in the first suite terminates the loop without executing the else clause’s suite. A continue statement executed in the first suite skips the rest of the suite and continues with the next item, or with the else clause if there is no next item.
中文譯文
用 break 關鍵字終止當前循環就不會執行當前的 else 語句,而使用 continue 關鍵字快速進入下一論循環,或者沒有使用其他關鍵字,循環的正常結束后,就會觸發 else 語句。 #觸發else list = [1,2,3,4,5] for x in list:print(x) else:print("else")list = [1,2,3,4,5] i = 0 for x in list:continueprint(x) else:print("else") #不觸發else: list = [1,2,3,4,5] for x in list:print(x)break else:print("else")
總結 for else語句可以總結成以下。 如果我依次做完了所有的事情(for正常結束),我就去做其他事(執行else),若做到一半就停下來不做了(中途遇到break),我就不去做其他事了(不執行else)。只有循環完所有次數,才會執行 else 。break 可以阻止 else 語句塊的執行。
?
8.初始文件操作
打開文件: open(文件名,訪問模式) f = open("test.txt","w")打開文件的方式
r,以只讀方式打開文件 w,打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 a,打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。 w+,打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。讀取文件:f.read(),f.readline(),f.readlines()
f = open('test.txt', 'r') content = f.read(5) print(content) print("-"*30) content = f.read() print(content) f.close()寫入文件:f.write()
f = open('test.txt', 'w') f.write('hello world, i am here!') f.close()關閉文件:f.close()
一些案例
#1.獲取文件名 old_file_name = input("請輸入要備份的文件名(需要后綴):")#2。打開這個文件("r") f_read = open(old_file_name,"r")#new_file_name = old_file_name+"[復件]" position = old_file_name.rfind(".") new_file_name = old_file_name[0:position]+"[復件]"+old_file_name[position:]#3.創建一個文件,xxx[復件].txt f_write = open(new_file_name,"w")#4.往源文件中讀取內容,寫入備份的文件中 #content = f_read.read() #f_write.write(content) while True:content = f_read.read(1024)if len(content)==0:breakf_write.write(content)#5.關閉兩個文件 f_read.close() f_write.close() 文件備份 import os#1. 獲取一個要重命名的文件夾的名字 folder_name = input("請輸入要重命名的文件夾:")#2.獲取文件夾中所有的文件名字 file_names = os.listdir(folder_name) ''' 第一種方法 os.chdir(folder_name)3.對獲取的名字進行重命名即可for name in file_names:print(name)os.rename(name,"[京東出品]-"+name) ''' #第二種方法 for name in file_names:#print(name)old_file_name = "./"+folder_name+"/"+namenew_file_name = "./"+folder_name+"/"+"[京東出品]"+nameos.rename(old_file_name,new_file_name)print(new_file_name) 批量文件重命名?注:駝峰命名法
englishScore = 100 #小駝峰 english_score = 100 #下劃線,推薦 EnglishScore = 100 #大駝峰 englishscore = 100 #不推介?
轉載于:https://www.cnblogs.com/zhangyafei/articles/10107110.html
總結
以上是生活随笔為你收集整理的Python简介及入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java后端研发经典面试题总结二
- 下一篇: 键盘各个键所对应的键值