[課後作業] 第005講:閒聊之Python的數據類型|課後測試題及答案
測試題:
0.在Python中,int表示整型,那你還記得bool、float和str分別表示什麼嗎?
1.你知道為什麼布爾類型(bool)的True和False分別用1和0來代替嗎?
2.使用int()將小數轉換為整數,結果是向上取整還是向下取整呢?
3.我們人類思維是習慣於“四捨五入”法,你有什麼辦法使得int()按照“四捨五入”的方式取整嗎?
4.取得一個變量的類型,視頻中介紹可以使用type()和isinstance(),你更傾向於使用哪個?
5. Python3可以給變量命名中文名,知道為什麼嗎?
6. 【該題針對零基礎的魚油】你覺得這個系列教學有難度嗎?
動動手:
0.針對視頻中小甲魚提到的小漏洞,再次改進我們的小遊戲:當用戶輸入錯誤類型的時候,及時提醒用戶重新輸入,防止程序崩潰。
如果你嘗試過以下做法,請舉下小手:
1.
temp = input("不妨猜一下小甲魚現在心裡想的是哪個數字:")
2.
# 這種想法是因為type(1) 會返回<class 'int'>,如果type(temp) 返回結果一致說明輸入是整數。
3.
while type(temp) != type(1):
4.
print("抱歉,輸入不合法,", end='')
5.
temp = input("請輸入一個整數:")
複製代碼
或者可能這樣:
1.
temp = input("不妨猜一下小甲魚現在心裡想的是哪個數字:")
2.
# not操作符的作用是將布爾類型的結果翻轉:即取反的意思,not True == Flase
3.
while not isinstance(temp, int):
4.
print("抱歉,輸入不合法,", end='')
5.
temp = input("請輸入一個整數:")
複製代碼
以上方法的思路是正確的,不過似乎忽略了一點兒:就是input()的返回值始終是字符串,所以type(temp)永遠是<class 'str'>!
其實有蠻多的做法可以實現的,不過就目前我們學習過的內容來看,還不足夠。
所以,在讓大家動手完成這道題之前,小甲魚介紹一點新東西給大家!
s為字符串
s.isalnum()所有字符都是數字或者字母,為真返回True,否則返回False。
s.isalpha()所有字符都是字母,為真返回True,否則返回False。
s.isdigit()所有字符都是數字,為真返回True,否則返回False。
s.islower()所有字符都是小寫,為真返回True,否則返回False。
s.isupper()所有字符都是大寫,為真返回True,否則返回False。
s.istitle()所有單詞都是首字母大寫,為真返回True,否則返回False。
s.isspace()所有字符都是空白字符,為真返回True,否則返回False。
例如:
>>> s = 'I LOVE FISHC'
>>> s.isupper()
>>> True
s.isalnum()所有字符都是數字或者字母,為真返回True,否則返回False。
s.isalpha()所有字符都是字母,為真返回True,否則返回False。
s.isdigit()所有字符都是數字,為真返回True,否則返回False。
s.islower()所有字符都是小寫,為真返回True,否則返回False。
s.isupper()所有字符都是大寫,為真返回True,否則返回False。
s.istitle()所有單詞都是首字母大寫,為真返回True,否則返回False。
s.isspace()所有字符都是空白字符,為真返回True,否則返回False。
例如:
>>> s = 'I LOVE FISHC'
>>> s.isupper()
>>> True
好了,文字教程就到這裡,大家趕緊趁熱打鐵,改造我們的小遊戲吧!
1.寫一個程序,判斷給定年份是否為閏年。(注意:請使用已學過的BIF進行靈活運用)
這樣定義閏年的:能被4整除但不能被100整除,或者能被400整除都是閏年。
2.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!
回复您的答案即可查看參考答案!
測試題答案:
本帖隱藏的內容
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(小甲魚)
>>>我愛你
6. 【該題針對零基礎的魚油】你覺得這個系列教學有難度嗎?
如果有不懂的問題,請在此處提問:http://bbs.fishc.com/forum-173-1.html
另外需要小甲魚在視頻講解的方面做哪方面改進請回帖告之!
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(小甲魚)
>>>我愛你
6. 【該題針對零基礎的魚油】你覺得這個系列教學有難度嗎?
如果有不懂的問題,請在此處提問:http://bbs.fishc.com/forum-173-1.html
另外需要小甲魚在視頻講解的方面做哪方面改進請回帖告之!
動動手答案:
本帖隱藏的內容
0.針對視頻中小甲魚提到的小漏洞,再次改進我們的小遊戲:當用戶輸入錯誤類型的時候,及時提醒用戶重新輸入,防止程序崩潰。
需要注意的地方在代碼中已經註釋!
需要注意的地方在代碼中已經註釋!
1.
import random
2.
3.
times = 3
4.
secret = random.randint(1,10)
5.
6.
print('------------------我愛魚C工作室------------------')
7.
guess = 0
8.
print("不妨猜一下小甲魚現在心裡想的是哪個數字:", end=" ")
9.
10.while (guess != secret) and (times > 0):
11. temp = input()
12.
13. if temp.isdigit():
14. guess
= int(temp)
15. if
guess == secret:
16.
print("我草,你是小甲魚心裡的蛔蟲嗎?!")
17.
print("哼,猜中了也沒有獎勵!")
18. else:
19.
if guess > secret:
20.
print("哥,大了大了~~~")
21.
else:
22.
print("嘿,小了,小了~~~")
23.
if times > 1:
24.
print("再試一次吧:",
end='')
25.
else:
26.
print("機會用光咯T_T")
27. else:
28.
print("抱歉,您的輸入有誤,請輸入一個整數:", end='')
29.
30. times = times - 1 # 用戶每輸入一次,可用機會就-1
31.
32.print("遊戲結束,不玩啦^_^")
33.
複製代碼
1. 寫一個程序,判斷給定年份是否為閏年。
(注意:請使用已學過的BIF 進行靈活運用)
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 + ' 不是閏年!')
複製代碼
2.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!
Python的一些數值類型
(1)整型:就是整數,Python3不區分長整型和整型
(2)浮點型:就是小數。
Python區分整型和浮點型就是看有沒有小數點。
e記法:即科學計數法,用於表示一個特大或特小的數。也是浮點型。
例如:>>> a =
0.000000000000000000000000001
>>> a
1e-27
(3)布爾類型:Ture 和False。(特殊的整型,在計算時,True就是1,False就是0,但是不推薦使用,侮辱了布爾類型數)
>>> True + True
2
>>> True + 1
2
>>> True + False
1
類型轉換
int() float()
str()
>>> a = '520'
>>> int(a)
520
>>> a = '小甲魚'
>>> int(a)
Traceback (most recent call last):
File "<pyshell#31>", line 1, in
<module>
int(a)
ValueError: invalid literal for int() with base 10: '小甲魚'
>>> a = 5.99
>>> int(a)
5
小數轉換為整數,是直接取整,去掉小數點後面的數,對於負數也是如此:
>>> a = -5.88
>>> int(a)
-5
>>> a = '520'
>>> float(a)
520.0
>>> a=5.99
>>> str(a)
'5.99'
>>> a = 1e-19
>>> str(a)
'1e-19'
>>> a = 1e19
>>> str(a)
'1e+19'
>>> str = 'I love fishc'
>>> str
'I love fishc'
>>> str(5.99)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in
<module>
str(5.99)
TypeError: 'str' object is not callable
一定不要使用內置函數作為變量名,最後可能會出現很多錯誤。
獲取關於類型的信息
type()函數,但是更建議使用isinstance()
>>> type(5)
<class 'int'>
>>> type(5.99)
<class 'float'>
>>> type(True)
<class 'bool'>
>>> type(1e2)
<class 'float '>
isinstance(a,b)有兩個參數,a表示輸入的數據,b為指定的數據類型,返回值為Ture 或者False
>>> isinstance('小甲魚',str)
True
>>> isinstance(320,int)
True
>>> isinstance(320,float)
False
>>> isinstance(1e-2,float)
True
0 留言:
發佈留言