iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

不要太認真學 Python! 之 我又重新報名了系列 第 19

不要太認真學 Python! - Day 22

  • 分享至 

  • xImage
  •  

[前情提要]

基於我實在是沒辦法讓那段文字順利運行,因此我今天的功課就是,把那段程式碼仔細解讀一遍,把該弄懂的字詞整理一遍,然後在實驗幾次,如果真的不行那我就要進行下一個項目了。

關於下一個項目,我在兩個主題中思考很久,第一個是「Pygame」,第二個是「LINEbot 機器人」我看了一下許多教程,總覺得 LINEbot,我還不成火候,可能會駕馭不了,所以還是先從「Pygame」下手吧!


關於那個大神的水仙花數

  print('輸出所有水仙花數:' )
  for i in range(0,100001):
  	       temp=i
  	       sum=0
  	       a=len(str(i))
  	       while temp:
  		       sum+=(temp%10)**a
  		       temp//=10
  		       if sum==i:
  			       print(i,end='  ')

作者:yang元祐
連結:https://www.zhihu.com/question/21872507/answer/130662819
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

我想弄懂下面兩個詞:

  1. temp
  2. +=

1. temp

A.tempfile
剛去谷歌的時候出現了好多「tempfile」的解釋,那就姑且看看「tempfile」的定義是什麼好了。

tempfile,其實就是「TemporaryFile」的縮寫,其實這也不難理解,就是暫時的資料夾,最主要是用來儲存臨時的文件和目錄,這個資料夾通常會在關閉後自動刪除。

跟 tempfile 綁在一起的就是 NamedTemporaryFile,兩者的差別在於 tempfile 用於僅對於一個應用程式或主機所使建立的暫時資料夾,但是後者則是對多個應用程式和主機時才需建立該種資料夾。兩者相同的地方是,在程式執行到 temp.close() 的時候,資料夾將會自動刪除。

https://ithelp.ithome.com.tw/upload/images/20190923/201204233xLBo1mZ76.jpg

但是,我覺得在這裡的程式碼,應該不是只暫存資料夾,比較像一個數學名詞之類的。所以,先把這個看起來很厲害的資料夾放一邊,繼續爬文。

B. 暫存變量
一般針對不同的變量都會有不同的命名方式,通常變量都會直譯成英文,像是性別(age)、姓名(name)等等。

但是,有些變量僅只是暫時用的,所以不用特意命名,這時候,就可以用 temp 代替那個變量了!

這應該比較符合上面那段程式碼中「temp」的用法。

2. +=

「+=」,這個符號組合,我只有查到大陸的專有名詞說法,不知道台灣是不是也這樣稱呼它,它的名稱叫做「加法賦值運算符」,另一個說法是「變數遞增」。

其實我覺得用後面這個名稱蠻好的,舉個簡單的例子吧!

https://ithelp.ithome.com.tw/upload/images/20190923/20120423Djs2VVqDRn.jpg
假設 a=2,a+=8
則 a+=8 可以寫成 a=a+8
a 帶入 2
則 a=2+8 等式右邊要先算
所以,a就會等於10。

另外,有加就有減,因此有「減法賦值運算符」,又稱「變數遞減」,「-=」。

中文 運算子 拆解:白話寫法 python 語法
*= A=A*2 A *= 2
浮點除法 /= A=A/2 A /= 2
整數除法 //= A=A//2 A //= 2
除法求餘數 %= A=A%2 A %= 2
次方 **= A=A**2 A **= 2

好的,運算到這裡。
我還是不能理解為什麼要發明這個運算子。

https://ithelp.ithome.com.tw/upload/images/20190923/20120423OrTmxvP3rC.jpg

不過聽說這個運算子以後會很好用...
菜逼八目前是不太能體會啦)笑哭

https://ithelp.ithome.com.tw/upload/images/20190923/20120423hML5SWJVbq.jpg

好的,今日學習完畢。
就再來重新整理一次水仙花的程式碼,看看可不可以跑得動吧!
我覺得肯定是空格鍵的關係...
全部砍掉重練,重新加上縮排和空格,就不信不會動!!!

print('輸出所有水仙花數:' )
for i in range(0,100001):
    temp=i
    sum=0
    a=len(str(i))
    while temp:
        sum+=(temp%10)**a
        temp//=10
        if sum==i:
            print(i,end='  ')

測試結果:原來是前面都偷給我空半格!!!)怒

https://ithelp.ithome.com.tw/upload/images/20190923/20120423bWtN80opVi.jpg

不過總算成功啦!!!

https://ithelp.ithome.com.tw/upload/images/20190923/20120423OtqWkwVOBm.png

今天總算可以好好睡覺了!!!

滿足收工!!!

不過今天想來發一個超好笑的影片,就放在下方的同場加映吧!

[ 同場加映 ]
這是很早以前的影片,但是裡面的阿希根本是現在的我啊)哭笑不得

I wrote 14 lines with 14 errors.
Don't you understand!?
It took me 3 months to read the book! 5 hours to fix an error!

Yes


不要太認真學 Python! - Day 21


上一篇
不要太認真學 Python! - Day 21
下一篇
不要太認真學 Python! - Day 23
系列文
不要太認真學 Python! 之 我又重新報名了31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
yorkc99
iT邦新手 5 級 ‧ 2019-09-24 18:18:17

那個 temp 只是臨時的英文縮寫 temporary => temp
你看每執行一次迴圈就會把 temp = i
你把這支程式的 temp 換成任何一個變數都可以正常執行
你想太多了

至於 +=
A = A + B = A += B
-= 同理
google 就有很多說明了

RGB iT邦新手 5 級 ‧ 2019-09-25 13:20:44 檢舉

好,謝謝指教!!

我要留言

立即登入留言