python2是用ascii碼作為預設編碼,因此在專案**中如果出現中文是會報錯
需要新增 #-- encoding:utf-8 -- 標頭檔案來解決中文亂碼問題
python3中/表示真除,%表示取餘,//表示地板除(結果取整);
python2中/表示根據除數被除數小數點位得到結果,//同樣表示地板除
統一一下:python3中/表示真除,%表示取餘,//結果取整;python2中帶上小數點/表示真除,%表示取餘,//結果取整
python3中的range()函式是生成乙個陣列
函式說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成乙個序列。
range示例:
range(5)[0, 1, 2, 3, 4]
range(1,5)[1, 2, 3, 4]
range(0,6,2)python2中的xrange()和python3中的range()用法是完全相同的,所不同的是生成的不是乙個陣列,而是乙個生成器。[0, 2, 4]
xrange示例:
xrange(5)xrange(5)
list(xrange(5))[0, 1, 2, 3, 4]
xrange(1,5)xrange(1, 5)
list(xrange(1,5))[1, 2, 3, 4]
xrange(0,6,2)xrange(0, 6, 2)
list(xrange(0,6,2))這兩個輸出的結果都是一樣的,實際上有很多不同,range會直接生成乙個list物件:[0, 2, 4]
a = range(0,10)
print type(a)
print a
print a[0], a[1]
輸出結果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0 1而xrange則不會直接生成乙個list,而是每次呼叫返回其中的乙個值:
a = xrange(0,10)
print type(a)
print a
print a[0], a[1]
輸出結果:
xrange(10)
0 1所以xrange做迴圈的效能比range好,尤其是返回很大的時候,盡量用xrange吧,除非你是要返回乙個列表。
print 在python2中作為語句,在python3中作為函式
例項1:
print(』『hello』』):在python2中(』『hello』』)是語句的一部分,是乙個整體;在python3中』『hello』『是作為乙個引數出入到函式中。
例項2:
print(』『hello』』, 『『world』』):在python2中輸出乙個元組,在python3中輸出兩個字串預設中間用空格隔開。
注:在python2.6+中匯入future模組中的print_fuction才能將print當做函式使用。
python2中字串有兩個型別:unicode和str,前者表示文字字串,後者表示位元組序列,兩者沒有明顯的界限,開發者也感覺很混亂。
python3中做了嚴格的區分,str表示字串,byte表示位元組序列,任何需要寫入文字或者網路傳輸的資料都只接收位元組序列。
補充:encode()和decode()
decode 解碼,encode 編碼:字串在python內部的表示是unicode編碼,在做編碼轉換時,通常需要以unicode作為中間編碼, 即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。
例項:s=『中文』 如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用 decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。
Python2 x與Python3 x的區別
這個星期開始學習python了,因為看的書都是基於python2.x,而且我安裝的是python3.1,所以書上寫的地方好多都不適用於python3.1,特意在google上search了一下3.x和2.x的區別。特此在自己的空間中記錄一下,以備以後查詢方便,也可以分享給想學習python的frie...
python2 X與python3 X的區別
前言 最近在復現一些大牛的演算法,經常會遇到一些關於版本不相容的問題,導致演算法執行錯誤。甚是討厭,坑位如下。問題1 float object cannot be interpreted as an integer。原因 在python2,只留下了整數部分,去掉了小數,是int型。在python3裡...
Python2 X輸入函式
mystr raw input 請輸入指令 import os os.system mystr 執行結果 ps input返回的是數值型別,如int,float raw inpout返回的是 字串型別 string型別 若輸入是表示式,則input會計算出表示式的值,而raw input會原樣輸出 ...