python學習筆記(四)-數據類型
阿新 • • 發佈:2017-12-12
rand 兩個 urn 浪費 line 平年 randint .com .cn
0. 在 Python 中的數據類型詳解
http://www.cnblogs.com/scios/p/8026576.html
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(),你更傾向於使用哪個?
type()與isinstance()的區別
共同點:兩者都可以判斷對象類型
不同點:對於一個 class 類的子類對象類型判斷,type就不行了,而 isinstance 可以。
例如:
class A: pass class B(A): pass isinstance(A(), A)# returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False
綜上,推薦使用 isinstance 判斷對象類型。
5. Python3 可以給變量命名中文名,知道為什麽嗎?
Pyhton3 源碼文件默認使用utf-8編碼(支持中文),這就使得以下代碼是合法的:
我和你 = ‘我愛你‘ print(我和你)
6. 針對第三節課中的猜數字遊戲,再次改進:當用戶輸入錯誤類型的時候,及時提醒用戶重新輸入,防止程序崩潰。
import random times = 3 secret = random.randint(1,10) print(‘------------------遊戲開始------------------‘) guess = 0 print("不妨猜一下我現在心裏想的是哪個數字:", end=" ") while (guess != secret) and (times > 0): temp = input() while not temp.isdigit(): temp = input("抱歉,您的輸入有誤,請輸入一個整數:") guess = int(temp) if guess == secret: print("你是俺心裏的蛔蟲嗎?!") print("哼,猜中了也沒有獎勵!") break else: if guess > secret: print("哥,大了大了~~~") else: print("嘿,小了,小了~~~") times = times - 1 # 用戶每輸入一次,可用機會就-1 if times > 0: print("再試一次吧:", end=" ") else: print("機會用光咯T_T") print("遊戲結束,不玩啦^_^")
7. 寫一個程序,判斷給定年份是否為閏年。
閏年應能被4整除(如2004年是閏年,而2001年不是閏年), 但不是所有被4整除的年份都是閏年。在能被100整除的年份中, 又同時能被400整除的年份才是閏年(如2000年是閏年), 能被100整除而不能被400整除的年份(如1800、1900、2100)不是閏年。 這是國際公認的規則。
temp=input(‘輸入需要判斷的年份:‘) while not temp.isdigit(): print("您的輸入有誤,請輸入一個數字!") temp=input() year=int(temp) i=year%400 j=year%100 if i==0 and j==0: print(temp+‘是閏年!‘) else: print(temp+‘是平年‘)
python學習筆記(四)-數據類型