作者 主題: 請問一下 lambda  (閱讀 13924 次)

0 會員 與 1 訪客 正在閱讀本文。

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
請問一下 lambda
« 於: 2011-06-25 02:03 »
在寫練習題時看到這個一題,要求只以一個lambda 來判斷是否為偶數並產生以下輸出

>>> even(5)
    False
>>> even(8 )
    True

我在網路上找了一下範例,感覺是需要再額外指定一個list 才能做到
有那位大大可以解慼的嗎?

謝謝

題目在這邊:http://www.pyschools.com/quiz/view_question/s2-q11
« 上次編輯: 2011-06-25 12:42 由 redjack »
Knowledge is Power

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
回覆: 請問一下 lambda
« 回覆 #1 於: 2011-06-25 12:41 »
一覺起來~(六點、八點…然後就是12點了>"<)

用這個通過一半的測試:even = lambda x,:bool(x/2)
even(5), even(8 ) 都OK

不過在Private Test Cases 中卻過不了,也不知道Private Test Cases 是要怎樣才能通過
還在苦惱中 :s

PS: 可能是這樣子的寫法有瑕疵吧,不過試著加上 int(x) ,修正成even = lambda x:bool(x/2) 也沒啥用
« 上次編輯: 2011-06-25 12:58 由 redjack »
Knowledge is Power

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
回覆: 請問一下 lambda
« 回覆 #2 於: 2011-06-25 13:10 »
其他的寫法:even = lambda x: True if (x/2) == 1 else False -> 無法通過 Private Test Cases
Knowledge is Power

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
回覆: 請問一下 lambda
« 回覆 #3 於: 2011-06-26 01:09 »
最後問到的答案:even = lambda x:bool(x % 2==0)

差異在那就要再研究了..
Knowledge is Power

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 請問一下 lambda
« 回覆 #4 於: 2011-06-26 02:12 »
最後問到的答案:even = lambda x:bool(x % 2==0)

差異在那就要再研究了..

預設是整數除法, 除了 (0/2) 或 (1/2) = 0 為 false 之外
其他都會得到大於 0 的值, 所以結果也就都會是 true
x % 2 是取除以 2 的餘數, 只要是偶數, % 2 的結果都會是 0
所以用這個來判斷偶數是一定不會錯的  :D

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
回覆: 請問一下 lambda
« 回覆 #5 於: 2011-06-26 02:23 »
嗯,我在回覆/謝謝 解答者的同時
也才注意到:因為系統測試時剛好是用 0 和 1 下去測的,所以我那個"其實是錯的" 的東西才會過

真的還是要用很明確的式子來判斷比較好,由其是新手上路時 ^^
也謝謝 Yamaka 大大的提醒
Knowledge is Power