课时5:闲聊之Python的数据类型
目錄:
一、引言
二、數據類型
>整型
>浮點型
>布爾類型
三、類型轉換
四、獲得關于類型的信息
五、課時05課后習題及答案
?
***********
一、引言
***********
大家還記得‘520’和520的區別嗎?
沒錯,帶了引號的,無論是單引號還是雙引號或者是三引號,都是字符串;但不帶引號的,就是數字。字符串相加叫作拼接。
>>> "520"+'1314' '5201314' >>> 520+1314 1834今天來介紹一些Python的數據類型,包括整型、浮點型、布爾類型、復數類型等。
?
****************
二、數據類型
****************
1、整型
整型說白了,就是平時所見的整數,Python3的整數已經與長整型進行了無縫的結合,現在的Python3的整型類似于Java的BigInteger類型,它的長度不受限制。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 如果說非要有個限制,那只限于計算機的虛擬內存總數。所以用Python3很容易進行大數的計算。
2、浮點型
浮點型就是平時所說的小數。Python區分整型和浮點型的唯一方式,就是看有沒有小數點。
談到浮點型,不得不提E記法,E記法就是平常所說的科學記數法,用于表示特別大和特別小的數。
>>> a=0.000000000000000000025 >>> a 2.5e-20 >>> 150000000000 150000000000 >>> 1.5e11 150000000000.0這個E的意思是指數,指底數為10,E后邊的數字是10的多少次冪。
3、布爾類型
布爾類型事實上是特殊的整型,True相當于整數值1,False相當于整數值0.
>>> True + False 1 >>> True + True 2 >>> True/False Traceback (most recent call last):File "<pyshell#17>", line 1, in <module>True/False ZeroDivisionError: division by zero當然把True和False當成1和0來參與這種運算的這種做法是不妥的。
?
***************
三、類型轉換
***************
接下來介紹幾個跟數據類型緊密相關的函數:int()、float()、str().
1、int()的作用就是將一個字符串或浮點數轉換為一個整數
>>> a = '520' >>> b = int(a) >>> a,b ('520', 520) >>> c = 5.99 >>> d = int(c) >>> c,d (5.99, 5)注意了,如果是浮點數轉換為整數,那么Python會采取”截斷“處理,就是把小數點后的數據直接砍掉,注意不是四舍五入哦。
補充:
>>> a = int("小甲魚") Traceback (most recent call last):File "<pyshell#21>", line 1, in <module>a = int("小甲魚") ValueError: invalid literal for int() with base 10: '小甲魚'”小甲魚“是一個字符串,但不是一個表示數字的字符串,它是一個編碼,編碼跟數字沒有關系。所以會報錯。
2、float()的作用是將一個字符串或整型轉換成一個浮點數(就是小數)
>>> a = "520" >>> b = float(a) >>> a,b ('520', 520.0) >>> c = 520 >>> d = float(c) >>> c,d (520, 520.0)3、str()的作用是將一個數或任意其他類型轉換成一個字符串
>>> a = 5.99 >>> b = str(a) >>> a,b (5.99, '5.99') >>> c = str(5e15) >>> c '5000000000000000.0' >>> d = str(15) >>> d '15'>>> c = str(5e19)
>>> c
'5e+19'
?
****************************
四、獲得關于類型的信息
****************************
Python提供了一個函數,可以明確的告訴我們變量的類型,這就是type函數:
>>> type("520") <class 'str'> >>> type(5.20) <class 'float'> >>> type(520) <class 'int'> >>> type(true) Traceback (most recent call last):File "<pyshell#3>", line 1, in <module>type(true) NameError: name 'true' is not defined >>> type(True) <class 'bool'>我們更建議使用isinstance()這個BIF來確定變量的類型。這個BIF有兩個參數:第一個是待確定類型的數據;第二個是指定一個數據類型。
>>> type(True) <class 'bool'> >>> a = "小甲魚" >>> isinstance(a,str) True >>> isinstance(520,float) False >>> isinstance(520,int) True?
*******************************
五、課時05課后習題及答案
*******************************
測試題:
0. 在 Python 中,int 表示整型,那你還記得 bool、float 和 str 分別表示什么嗎?
1. 你知道為什么布爾類型(bool)的 True 和 False 分別用 1 和 0 來代替嗎?
2. 使用 int() 將小數轉換為整數,結果是向上取整還是向下取整呢?
3. 我們人類思維是習慣于“四舍五入”法,你有什么辦法使得 int() 按照“四舍五入”的方式取整嗎?
4. 取得一個變量的類型,視頻中介紹可以使用 type() 和 isinstance(),你更傾向于使用哪個?
5. Python3 可以給變量命名中文名,知道為什么嗎?
動動手:
0. 針對視頻中小甲魚提到的小漏洞,再次改進我們的小游戲:當用戶輸入錯誤類型的時候,及時提醒用戶重新輸入,防止程序崩潰。 如果你嘗試過以下做法,請舉下小手: temp = input("不妨猜一下小甲魚現在心里想的是哪個數字:") # 這種想法是因為type(1)會返回<class 'int'>,如果type(temp)返回結果一致說明輸入是整數。 while type(temp) != type(1):print("抱歉,輸入不合法,", end='')temp = input("請輸入一個整數:")或者可能這樣:
temp = input("不妨猜一下小甲魚現在心里想的是哪個數字:") # not操作符的作用是將布爾類型的結果翻轉:即取反的意思,not True == Flase while not isinstance(temp, int):print("抱歉,輸入不合法,", end='')temp = input("請輸入一個整數:")以上方法的思路是正確的,不過似乎忽略了一點兒:就是input()的返回值始終是字符串,所以type(temp)永遠是<class 'str'>!??
其實有蠻多的做法可以實現的,不過就目前我們學習過的內容來看,還不足夠。
所以,在讓大家動手完成這道題之前,小甲魚介紹一點新東西給大家!
好了,文字教程就到這里,大家趕緊趁熱打鐵,改造我們的小游戲吧!
1. 寫一個程序,判斷給定年份是否為閏年。(注意:請使用已學過的 BIF 進行靈活運用)
這樣定義閏年的:能被4整除但不能被100整除,或者能被400整除都是閏年。
?
答案:
測試題答案:
0. 在 Python 中,int 表示整型,那你還記得 bool、float 和 str 分別表示什么嗎?
bool 表示布爾類型
float 表示浮點型
str 表示字符串
1. 你知道為什么布爾類型(bool)的 True 和 False 分別用 1 和 0 來代替嗎?
你可能聽說過計算機是很“笨”的,究其根本是因為它只認識二進制數,所以所有的編程語言最終都會轉換成簡單的二進制序列給CPU按照一定的規則解析。
由于二進制只有兩個數:0 和 1,因此用 0 和 1 來表示 False 和 True 再適合不過了,因為不用浪費資源在轉換的過程上!
2. 使用 int() 將小數轉換為整數,結果是向上取整還是向下取整呢?
我們可愛的小甲魚說了,小數取整會采用比較暴力的截斷方式,即向下取整。(注:5.5向上取整為6,向下取整為5)
3. 我們人類思維是習慣于“四舍五入”法,你有什么辦法使得 int() 按照“四舍五入”的方式取整嗎?
int() 固然沒那么“聰明”,但機器是死的,魚油是活的!
5.4 “四舍五入”結果為:5,int(5.4+0.5) == 5
5.6 “四舍五入”結果為:6,int(5.6+0.5) == 6
大家看明白了嗎?
4. 取得一個變量的類型,視頻中介紹可以使用 type() 和 isinstance(),你更傾向于使用哪個?
建議使用 isinstance(),因為它的返回結果比較直接,另外 type() 其實并沒有你想象的那么簡單,我們后邊會講到。
5. Python3 可以給變量命名中文名,知道為什么嗎?
Pyhton3 源碼文件默認使用utf-8編碼(支持中文),這就使得以下代碼是合法的:?
>>> 小甲魚 = '我愛你'??
>>> print(小甲魚)
>>> 我愛你
?
動動手答案:
0. 針對視頻中小甲魚提到的小漏洞,再次改進我們的小游戲:當用戶輸入錯誤類型的時候,及時提醒用戶重新輸入,防止程序崩潰。
需要注意的地方在代碼中已經注釋!
1. 寫一個程序,判斷給定年份是否為閏年。
1 temp = input('請輸入一個年份:') 2 while not temp.isdigit(): 3 temp = input("抱歉,您的輸入有誤,請輸入一個整數:") 4 5 year = int(temp) 6 if year/400 == int(year/400): 7 print(temp + ' 是閏年!') 8 else: 9 if (year/4 == int(year/4)) and (year/100 != int(year/100)): 10 print(temp + ' 是閏年!') 11 else: 12 print(temp + ' 不是閏年!')?
轉載于:https://www.cnblogs.com/DC0307/p/9364467.html
總結
以上是生活随笔為你收集整理的课时5:闲聊之Python的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1小时钟回顾MySQL语法(中)
- 下一篇: Eclipse 配置 maven 的两个