心血來潮想重拾編程,原來學的那點C語言早就還給老師了,覺得還是學個實用又簡單的,於是選了Python,按照《Python基礎教程第二版》學了兩章,書裏面用的python版本是2.5.x,我下的是3.4.2,發現python在3.0以後的版本差異還是挺大的,遂重開博客,記錄一下吧。
第一章 基礎知識
1.1 安裝
官網下載安裝什麼的就不說了,過程中沒有遇到任何問題,一切順利。WIN7 64位+Python IDLE。話說這個截止到最新版本好像還是不會顯示行號?只能通過查找行號來看,不是很方便。
1.2 交互式解釋器
在>>>後輸入你的代碼就好了,不會的F1,Python一行就是結束,不需要分號
print "hello,world!"
居然第一步就出現了紅叉叉!好吧,記住嘍,新的print格式是醬紫滴:
print("hello,world!")
say過hello了,算是進入python世界了吧。
1.3 算法是什麼
計算機程序設計就是要告訴計算機做什麼,算法就是具體的細節,類似於食譜的東西,教會計算機每一步怎麼做。
它包括要素(對象,物品)及指令(語句)。
print("hello,world!") #給我顯示"hello,world!"
1.4 數字和表達式
它是個強大的計算器,常用的加減乘除都可以直接輸入,它能識別的。
新版本已經可以自動顯示浮點數了,試驗了一下,最高顯示到小數點後16位。如果想要整除的話,就要用//了。
1/2 #顯示結果跟1.0/2.0是一樣的咯,都是0.5,很聰明吧。
1//2 #結果是0,
1.0//2.0 #結果是0.0
+,-,*,/,加減乘除就是常見符號,此外還有
%:取餘運算符。 X%Y的結果爲X除以Y的餘數
**:冪運算符,乘方。優先級高於取反。如果要計算(-3)**2,需要加括號。
1.4.1 長整型數
新版本在長整型末尾已經不會加L了。直接顯示數字。
1.4.2 十六進制和八進制
0xAF #這個十六進制數的轉換還是可以使用,結果顯示正確的175
>>> 010
SyntaxError: invalid token
0o10 #這樣纔會出現正確的結果8,注意第2位是字母O哦,但是嘗試了0o20又會報錯,搞不清楚python的邏輯<img alt="抓狂" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/crazy.gif" />
其實有更簡單的方法來實現不同進制到10進制數的轉換
int('X',Y),把X換成你想轉換的數字,Y是你用的這個數字的進制
比如想把八進制數字010轉換成10進制,
>>> int('010',8) #正確的數字8就乖乖的出來啦!
1.5 變量
就是用來代表這個值的名字,X,Y之類的。
使用變量之前要先賦值,就是介紹一下這是個什麼東東,不然誰知道你X是代表染色體還是未知數啊。
第一步X=3,第二步X*2,電腦纔會乖乖顯示6。
1.6 語句
語句就是告訴計算機要做什麼,
2*2跟print 2*2的結果並沒有什麼不同。
1.7 獲取用戶輸入
input函數
新版本中必須強調變量爲數值型纔會進行運算,前面可以int或float等。
x=int(input("x:")) #電腦會提示你輸入X的值
y=int(input("y:")) #電腦會提示你輸入Y的值
print(x*y) #這裏的結果就是你輸入兩個值的乘積。
1.8 函數
系統內自定義了一些小程序,比如pow代替冪運算,
使用2**3,跟用pow(2,3)是一樣的結果。
其它函數:
abs:絕對值,abs(-10)=10
round:四捨五入,round (1/2)顯示結果爲0。新版本做了改變的是(1.0/2.0)結果會返回0,所有結果正好爲0.5的會自動捨去,如果比0.5大一點,哪怕是0.50000(無限個0)1,都會五入。
1.9 模塊
導入到python以加強功能的擴展,需要用import命令來導入,然後按照模塊.函數的格式來使用。
import math
math.floor(32.9) #floor表示取整,所以結果顯示32.0,年齡一般都是整數,
int(math.floor(32.9)) #顯示結果32
不希望每次調用函數時都要寫上模塊名,可以用from模塊import函數來調用,這種方式可能導致類命名衝突,儘量不要使用。from math import sqrt
sqrt(9) #結果顯示3.0
1.9.1 cmath和複數
cmath表示複數,可以計算虛數。
import cmath
cmath.sqrt(-1) #顯示結果1j,即虛數。
1.10 保存並執行程序
用file-new window打開一個數的編輯窗口,即可以實現編寫完後統一運行。保存爲*.py後按F5運行。
name=input("what is your name?") #新版本已沒有raw_input,直接用input
print("hello,"+name+"!")
註釋: #後的文字表示註釋的文字
1.11 字符串
1.11.1 單雙引號字符串和轉義引號
單引號跟雙引號顯示結果沒有區別,在某些場合下可能會出現識別不出來,如'Let's go',電腦不知道該如何處理了,因爲出現了三個單引號,用雙引號可以避免這種誤解。
此外還可以使用轉義符反斜線(\)。
‘let\'s go!' #\表示後面的是一個字符。
轉義符如果用在句末,會忽略換行符
>>>print("hello,\
world!")
Hello world!
1.11.2 拼接字符串
用一個接另一個的方式寫兩個字符串,python會自動拼接它們。
“Let's say" '"hello,world!"'#會輸出'Let\'s say "hello world!"'
此外還可以用+,像加法運算一樣使用
x="hello,"
y="world!"
x+y #結果顯示'hello,world!'
1.11.3 字符串表示str和repr
str函數,會把值轉換成合理形式的字符串。(即不顯示引號)
repr會創建一個字符串,以python表達式的形式來表示值。
>>> print(repr("hello,world!"))
'hello,world!'
>>> print(repr(10000L)) #新版本已不用在長整型後加L,加了反而會報錯
SyntaxError: invalid syntax
>>> print(str("hello,world"))
hello,world
1.11.5 長字符串、原始字符串和Unicode
如果要寫一個非常長的字符串,要跨多行,就要用三個引號代替普通引號,三個單引號或者三個雙引號都可以('''或"""),並且不需要反斜線進行轉義。
原始字符串的使用:
如換行符寫成\n,放於字符串中,會有換行的作用,但是會出現歧義,比如C:\nowhere,可以寫成c:\\nowhere來避免,但是如果是長路徑呢?就需要寫很多\了.
原始字符串以r開頭,
>>> print(r'let\'s go!')
let\'s go
最後一個字符(位於結束引號前的那個)不是能是反斜線。
Unicode字符串,使用u前綴,跟r用法一樣。新版本中,所有字符串都是unicode字符串。