學習一門語言應該是一件充滿樂趣的事情,為什么要把它變難呢?
已完成的文章
標題 | 鏈接 |
---|---|
1. 這才是 Python 學習的正確起手姿勢,滾雪球學 Python | https://dream.blog.csdn.net/article/details/109586142 |
@
本系列文章將在2021年春節前完成,歡迎關注,點贊,評論 --- 夢想橡皮擦
二、Python 基本數據類型與輸入、輸出函數
2.1 基本數據類型
對於任何一門語言都存在一些基本類型,Python 也不例外,只不過數據類型在 Python 中要遠遠比其他語言簡單,基本分為以下幾種。
- 數值數據類型,常見的是整數和浮點數
- 布爾值數據類型,就是常說的真和假
- 字符串數據類型
這里要注意,提及到數據類型,特指的是變量的數據類型,在具體學習前,先學會如何看 Python 中的數據類型,才好下手學習。
這個看數據類型是啥的函數,叫做 type
,見名之意,所以咱們變量起名字的時候,也要學習一下官方命名技巧。
例如,看一下一個值為 10 的變量 x 的數據類型,代碼如下:
x = 10
print(type(x))
運行結果為
<class 'int'="">
該輸出結果就表示變量 x 的數據類型是整數,你可以用同樣的辦法測試一個小數。
x = 10.1
print(type(x))
運行結果顯示為:
<class 'float'="">
沒錯,這個是浮點數。
2.1.1 數值數據類型
上文你已經接觸到了 Python 中的兩種數值數據類型,一個叫做整數,一個叫做浮點數,對應到數學上的區別就是一個帶小數點,一個不帶,其實這就是最根本的區別。
如果整數和浮點數相加,最終的結果是浮點數,Python 會自動給轉換過去,代碼如下:
x = 10.1
y = 10
z = x + y
print(type(z))
運行代碼,可以核對下 z 的數據類型是否是 float
即浮點數。
2.1.2 整數的不同形式表示
對於編程語言學習者來說,你一定聽說過計算機處理的都是二進制,所以編程語言學起來特別難?What?學習編程語言跟二進制是有關系,但是跟你學會一門賺錢的手藝確沒啥關系。或者我說的在直接一些,你在北京拿個 1W 塊錢的薪水,各種進制的轉換可能你都用不到。
將整數顯示成二進制格式
注意一會還會將整數顯示成八進制與十六進制,這里處理的都是整數,也就是 1,2,3,4 這種不帶小數點的,浮點先不要考慮。
又一次需要用到一個后續才會明確的知識點,叫做 Python 內置函數,將整數轉換成二進制格式顯示用到的函數叫做 bin
,代碼如下:
x = 10
print(bin(x))
輸出結果為:
0b1010
二進制以 0b
開頭,后面都是 1,0 排列,如果你看到 Python 代碼中出現了這樣的整數,要認識這就是一個普通的數字,只是展示方式不同。
將整數顯示成八進制格式
將整數轉換成八進制用到的內置函數是 oct
,具體代碼可自行嘗試,八進制顯示的數字以 0o
開頭。
將整數顯示成十六進制格式
以 0x
開頭的數字為十六進制格式展示,轉換用函數為 hex
。
截止到這里,你已經對整數與整數的不同形式展示有了初步的認知,並且這些都不重要,重要的是你學習之后,看到 Python 代碼中出現以這些符號開頭的內容,你知道它就是一個普通的整數就好了。
2.1.3 數據類型強制轉換
這個地方只是類型強制轉換的冰山一角,為何學習也是因為你已經掌握了整數和浮點數,大概也對它們之前的區別有了那么一絲認識。其實它們之前還可以進行互相的轉換,只不過轉換你要承擔一些風險,為啥呢,往下看。
x = 10.5
print(int(x))
上述代碼,我將浮點數進行了類型強制轉換,注意在 x 前面套了一個 int 函數的殼,函數后面咱才會學習,現在你能模仿代碼編寫,能看懂我說的是啥就行。
在變量 x 外面套了一個 int()函數,然后運行,輸出的結果是 10
,風險出現了,浮點數轉換成整數,小數丟掉了...是真正的丟掉了,這種場景在后續編程中你會經常碰到。
int 其實也是 Python 的一個內置函數,它會嘗試將任何數據類型的變量轉換成整數,注意是任何數據類型的變量。
同理,你如果能猜到將任何數據類型的變量轉換成浮點數的函數名為 float
,證明你已經開始慢慢摸到 python 的精髓了。
好,到現在,又學習到了兩個內置函數,一個 int
,一個 float
,請一定要實際的打一下代碼,眼睛會,手不一定會。
2.1.4 擴展幾個數值數據類型常用的函數
雖然學的不多,你現在應該注意到一個詞 -- 函數出現的頻率在 Python 中極高,這也是為什么很多其他語言的使用者,會把 Python 藐視成一堆函數湊成的語言了,哼~淺薄者。
數值數據類型常用的函數,這里簡單舉幾個例子,后面還會詳細學習。
- abs() 計算絕對值
- pow() 次方運算
- round() 四舍五入
- max() 取最大值
- min() 去最小值
參考代碼如下,臨摹 2 遍知道是在干啥就行,下面的代碼涉及了函數中參數的概念,不做過多的解釋。
# abs() 計算絕對值
a = -1
print(abs(a))
# pow() 次方運算
x = 2
c = 3
print(pow(x,c))
# round() 四舍五入
d = 34.6
print(round(d))
# max() 取最大值
print(max(1,2,3))
# min() 去最小值
print(min(9,10,6))
2.1.5 布爾值數據類型
布爾來自英文 boolean 的音譯,在 Python 中布爾值有兩種,一個是真(True),另外一個就是假(False),使用 type 函數測試數據類型布爾值得到的是 bool。
注意 bool 在有的地方也會歸為整數,是因為真(True)被強制轉換之后等於 1,假(False)被前置轉換之后等於 0。
代碼如下:
x = True
print(int(x))
print(int(False))
布爾值以后會經常用在條件判斷上,屬於必須掌握的知識點,后續咱還會碰到它。
2.1.6 字符串數據類型
字符串是 Python 中使用場景最多的數據類型了,也是知識點最多的數據類型,一般情況下,兩個雙引號("
)或者兩個單引號('
)中間的部分就是字符串,在使用的時候一定要注意嵌套問題。例如下述代碼:
my_name = "夢想橡皮擦"
print(my_name)
my_name = '夢想橡皮擦'
print(my_name)
my_name = '夢想"橡皮擦'
print(my_name)
print(type(my_name))
下面這句話要記住,單雙引號都是成對出現的,雙引號里面要嵌套單引號,例如上述第三段代碼,單引號里面要嵌套雙引號。
字符串的連接
兩個字符串通過 +
可以進行連接,這里的加號就不是數字之間加法的含義了,測試如下:
a = "my"
b = "name"
c = a+b
print(c)
數字與字符串相加,會提示錯誤,如果不想報錯,可以通過 str
函數將數字轉換成字符串,例如:
a = 123
b = "name"
# str(a) 將整數變量a轉換成字符串
c = str(a) + b
print(c)
多行字符串
在前文已經學習了三引號可用於注釋,其實三引號真正的用途依舊是字符串場景,表示多行字符串。
my_str = """
我是字符串的第一行
我是字符串的第二行
我是夢想橡皮擦
我還是曾經那個少年
"""
print(my_str)
轉義(逸出)字符
在字符串中有一些特殊的字符,需要特別處理,例如,就想在單引號中使用單引號,那需要如下格式編寫:
a = 'I\'m a girl '
print(a)
注意,使用\'
之后就可以在單引號字符串中使用單引號了,\'
就是轉義字符。常見的轉義字符如下:
轉義字符 | 含義 |
---|---|
' | 單引號 |
" | 雙引號 |
\t | 制表符 |
\n | 換行 |
| 反斜杠 | |
還有其他轉義字符,初學階段不做展開,以上幾個在代碼中嘗試兩遍,還是知道是干啥的即可。 | |
當然有些時候,你需要避免轉移字符進行轉義,那需要在整體字符串前增加一個特殊的字母 r ,字符串前面增加特殊字符有很多,今天只學習這一個。例如下述代碼。 |
a = r"I\nm a girl"
print(a)
此時的\n
不會轉義成換行符,輸出內容就是字符串原有的樣子:
I\nm a girl
使用pycharm
這款工具,你能很清楚的認出轉義字符來,它存在顏色區分:
字符串快速復制
Python 中有一個獨特的小技巧,可以快速復制字符串,使用的是數學符號 *
,例如下述代碼,將快速復制一堆 #
號。
print("#"*100)
2.2 輸入與輸出
本小節核心學習的兩個函數,一個是 print
,另一個是 input
,在學習它們兩個之前,在補充一個內置函數 help
該函數可以查看其它函數的使用文檔。比如使用 print
測試:
help(print)
輸出內容如下圖所示:
這其中就包含了 print
函數的完整說明,最重要的部分如下:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
其中:
- value 表示要輸出的數據,可以多個,用逗號
,
分隔 - sep 輸出多個數據時,分隔符號,默認是空格
- end 輸出一行末尾輸出的符號
- file 輸出位置,默認輸出控制台,就是黑窗口中,可以設置到具體文件
- flush 是否清除數據流緩沖區,默認為 False(該內容先不做涉及)
以上這些其實准確的說法是函數參數。
編寫測試代碼,可臨摹運行:
# 輸出多個數據
print("hello","dream")
# 多個數據輸出的分隔符
print("i","love",sep="#")
運行結果和其它參數自行測試,上述內容重點為多個數據輸出,即 print(a,b,d,d)
必須掌握。
2.2.1 格式化 print 輸出
在很多教材中本部分內容會占用比較多的時間,其實大可不必,因為東西太雜,學過反而忘記了,不如簡單學習在大腦留下一個“恩,有這個東西”的痕跡即可。
格式化輸出就是這樣一個碎的知識點,格式化輸出 print 的意思就是按照你的意思輸出東西到任何載體上。
首先要學習的就是 格式化字符
,常見的有下面這幾個。
%d
整數輸出%f
浮點數輸出%x
十六進制輸出%o
八進制%s
字符串輸出,其實會這一個就行了
例如下述代碼就是一個案例:
name = "橡皮擦"
age = 18
score = 100
# 格式化一個變量輸出
print("我是 %s" % name)
# 格式化多個變量輸出
print("我是 %s 今年 %d歲了,我考試得了%d分" % (name,age,score))
注意格式化的時候,前面是一個待格式的字符串,把格式化字符作為一個特殊的符號放在一個字符串里面,相當於占了一個坑位,字符串后面跟着一個 %
,該符號固定為 %
,在后面是替換的內容,可以是變量名,也可以直接是值,如果前面的占位的是 %d
,后面就是數字,如果是 %s
,后面就是字符串。一般這里會配上下圖進行說明:
如果占位的格式化字符和后面給的實際變量的值匹配不上,例如前面是 %d
,后面 age
給了一個字符串,就會報錯:
name = "橡皮擦"
age = 18
score = 100
print("我是 %s" % name)
print("我是 %s 今年 %d歲了,我考試得了%d分" % (name,"nnn",score))
但是如果前面是 %s
,后面給字符串,就會自動轉換過去。
name = "橡皮擦"
age = 18
score = 100
print("我是 %s" % name)
print("我是 %s 今年 %s歲了,我考試得了%d分" % (name,18,score))
所以一般不嚴格的時候,前面的占位符通通用 %s
就可以了。不嚴謹,但是好用啊~
精准控制格式化的輸出
精准化輸出主要用於浮點數,因為浮點數存在小數點,控制小數點顯示的位數就顯得重要了,本文不做過多的涉及,經驗告訴我,很多同學學過去也就忘記了,你只需要記住 Python 也可以精准控制浮點數的顯示就可以了。
2.2.2 format 函數
上述 %
在學習階段使用一下還可以,在實際的格式化輸出中,更多的還是使用 format 進行操作,format 在使用的時候,通過 {}
符號進行占位,例如:
print("我是{},今年{},考試得了{}".format(name,age,score))
所有需要占位的地方都使用 {}
解決,不用去記住各種類型,也不會出現 %
這個莫名奇妙的符號。
2.2.3 input 數據輸入
input 執行的和 print 恰好想法,通過 help 查看一下:
參數比較簡單只有一個輸入提示語。測試代碼:
name = input("請輸入你的姓名:")
print("輸入的姓名為{}".format(name))
代碼運行會要求你輸入自己的姓名,回車之后會格式化輸出。默認情況下 input
獲取的輸入數據會存儲到一個變量中,本例為 name
,該變量類型為字符串類型,如果你需要獲取用戶輸入數字,記得通過 int
進行一下轉換。
input
比較簡單,本文先介紹這些。
2.3 這篇博客的總結
以上內容核心介紹了整數、浮點數、布爾與字符串數據類型,重點要掌握的是類型之間的轉換與字符串的初步認識,對於格式化輸出部分掌握 format
即可應付接下來的大多數場景,其余內容酌情遺忘吧,畢竟學編程還是蠻費腦力的。
最后一碗毒雞湯
好好學下去 每天都有新打擊
O(∩_∩)O 哈哈~
想學Python爬蟲,可以訂閱橡皮擦專欄哦~
https://dream.blog.csdn.net/article/details/86106916