2020年9月14日星期一

[課後作業] 第005講:閒聊之Python的數據類型|課後測試題及答案

申明本站飛宇網 https://feiyetopro.blogspot.com/自網路收集整理之書籍文章影音僅供預覽交流學習研究,其[書籍、文章、影音]情節內容, 評論屬其個人行為, 與本網站無關。版權歸原作者和出版社所有,請在下載 24 小時內刪除,不得用作商業用途;如果您喜歡其作品,請支持訂閱購買[正版]謝謝!



[課後作業] 005講:閒聊之Python的數據類型|課後測試題及答案




《零基礎入門學習Python》視頻下載地址:傳送門

測試題:

0.
Python中,int表示整型,那你還記得boolfloatstr分別表示什麼嗎?

1.
你知道為什麼布爾類型(bool)TrueFalse分別用10來代替嗎?

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

好了,文字教程就到這裡,大家趕緊趁熱打鐵,改造我們的小遊戲吧!


1.
寫一個程序,判斷給定年份是否為閏年。(注意:請使用已學過的BIF進行靈活運用)

這樣定義閏年的:能被4整除但不能被100整除,或者能被400整除都是閏年。


2.
請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!


回复您的答案即可查看參考答案!


測試題答案:

本帖隱藏的內容
0.Python中,int表示整型,那你還記得boolfloatstr分別表示什麼嗎?

bool
表示布爾類型
float
表示浮點型
str
表示字符串


1.
你知道為什麼布爾類型(bool)TrueFalse分別用10來代替嗎?

你可能聽說過計算機是很的,究其根本是因為它只認識二進制數,所以所有的編程語言最終都會轉換成簡單的二進制序列給CPU按照一定的規則解析。
由於二進制只有兩個數:01,因此用01來表示FalseTrue再適合不過了,因為不用浪費資源在轉換的過程上!


2.
使用int()將小數轉換為整數,結果是向上取整還是向下取整呢?

我們可愛的小甲魚說了,小數取整會採用比較暴力的截斷方式,即向下取整。(注:5.5向上取整為6,向下取整為5

但那是對於正數來說……對於負數則剛好相反——是向上取整。


3.
我們人類思維是習慣於四捨五入法,你有什麼辦法使得int()按照四捨五入的方式取整嗎?

int()
固然沒那麼聰明,但機器是死的,魚油是活的!
5.4 “
四捨五入結果為:5int(5.4+0.5) == 5
5.6 “
四捨五入結果為:6int(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就是1False就是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 '>
isinstancea,b)有兩個參數,a表示輸入的數據,b為指定的數據類型,返回值為Ture 或者False
>>> isinstance('小甲魚',str)
True
>>> isinstance(320,int)
True
>>> isinstance(320,float)
False
>>> isinstance(1e-2,float)
True


0 留言:

發佈留言