1. 程式人生 > >入門學習-Python-小甲魚學習資料-Day006-Pyhon之常用操作符

入門學習-Python-小甲魚學習資料-Day006-Pyhon之常用操作符

標題 Pyhon之常用操作符

根據視訊自己練習 :

視訊練習程式碼 :
a=b=c=d=10 ; print(a-1) ; print(b+3) ; print(c*10)

print(d/4) ; print(d//4)

print(a%3) ; print(a%7)

print(2**10)

print(-32) # 冪操作符 比 左 側優先順序 高
print(3
-2) # 冪操作符 比 右 側優先順序 低

print(not 0) ; print(not 4) ; print(not False) # False 和 True 的首字母大寫 , 小心了 !!!/print(not True)

print(3<4<5)
temp1 = 3
temp2 = 4
temp3 = 5
print(temp1<temp2<temp3) # 這個用法挺有意思

標題 006測試題答案:

  1. Python 的 floor 除法現在使用 “//” 實現,那 3.0 // 2.0 您目測會顯示什麼內容呢?

如果回答是 1.5 那麼很遺憾,您受到 C 語言的影響比較大,Python 這裡會義無反顧地執行 floor 除法原則,答案是:1.0

  1. a < b < c 事實上是等於?
    (a < b) and (b < c)

  2. 不使用 IDLE,你可以輕鬆說出 5 ** -2 的值嗎?
    0.04,也就是 1/25
    冪運算操作符比其左側的一元操作符優先順序高,比其右側的一元操作符優先順序低。

  3. 如何簡單判斷一個數是奇數還是偶數?
    使用求餘可以簡單得到答案:能被 2 整除為偶數,所以 x % 2 == 0,否則為奇數。

  4. 請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
    如果你的回答是 0,那麼小甲魚很開心你中招了!
    答案是:4
    小甲魚的解答 :
    not or and 的優先順序是不同的:not > and > or
    我們按照優先順序給它們加上括號:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
    == 0 or 0 or 4 or 6 or 9
    == 4
    為啥是 4?
    大家還記得第四講作業提到的“短路邏輯”嗎?3 and 4 == 4,而 3 or 4 == 3。
    所以答案是:4
    溫馨提示:為了更好的表達你的程式,小甲魚再次呼籲有些括號還是不能省下的,畢竟不是所有程式設計師都跟你一樣都將優先順序爛透於心的。

關於短路邏輯

“短路邏輯(short-circuit logic) :邏輯操作符有個有趣的特性:在不需要求值的時候不進行操作。這麼說可能比較“高深”,舉個例子,表示式 x and y,需要 x 和 y 兩個變數同時為真(True)的時候,結果才為真。因此,如果當 x 變數得知是假(False)的時候,表示式就會立刻返回 False,而不用去管 y 變數的值。
這種行為被稱為短路邏輯(short-circuit logic)或者惰性求值(lazy evaluation),這種行為同樣也應用與 or 操作符 ,實際上,Python 的做法是如果 x 為假,表示式會返回 x 的值(0),否則它就會返回 y 的值(例子參考樓上)。
我的理解 :
還有很關鍵的一句 : and的左側為Ture 以及 or的左側為 False , 都不能使用 短路邏輯 ,這句話小甲魚沒說 , 依此重新分析 :
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9 [注意 :0 or 0 or 4 這一段不適用短路邏輯 ]
== 0 or 4 or 6 or 9
== 4 or 6 or 9 [這時候 短路邏輯 開始生效]
== 4 or 9
== 4
這樣就明白了 !

  1. 還記得我們上節課那個求閏年的作業嗎?如果還沒有學到“求餘”操作,還記得用什麼方法可以“委曲求全”代替“%”的功能呢?
    因為上節課我們還沒有教大家“求餘”的操作,所以小甲魚使用了“if year/400 == int(year/400)”這樣的方式來“委曲求全”。

動動手答案:
0. 請寫一個程式打印出 0~100 所有的奇數。

  1. i = 0

  2. while i <= 100:

  3.  if i % 2 != 0:
    
  4.      print(i, end=' ')
    
  5.      i += 1
    
  6.  else:
    
  7.      i += 1
    
  8. 我們說過現在的 Python 可以計算很大很大的資料,但是…真正的大資料計算可是要靠剛剛的硬體滴,不妨寫一個小程式碼,讓你的計算機為之崩潰?
    print(2 ** 2 ** 32)

一般很多機子都會在一會兒之後:Memory Overflow,記憶體不夠用。

設計到冪操作,結果都是驚人滴。

2.愛因斯坦曾出過這樣一道有趣的數學題:有一個長階梯,若每步上2階,最後剩1階;若每步上3階,最後剩2階;若每步上5階,最後剩4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。
題目:請程式設計求解該階梯至少有多少階?

  1. x = 7
  2. i = 1
  3. flag = 0
  4. while i <= 100:
  5.  if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
    
  6.      flag = 1
    
  7.  else:
    
  8.      x = 7 * (i+1) # 根據題意,x一定是7的整數倍,所以每次乘以7
    
  9. i += 1
    
  10. if flag == 1:
  11. print('階梯數是:', x)
    
  12. else:
  13. print('在程式限定的範圍內找不到答案!')
    

下面是我寫的程式碼 : 答案是 119
stepright = 0
markit = True
while not (stepright%2 ==1 and stepright%3 == 2 and stepright%5 == 4 and stepright%6 == 5 and stepright%7 == 0):
stepright = stepright+1
print("滿足要求的最小步數是: ",stepright)