若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。
Python Puzzlers 系列文章皆參考"Java Puzzlers: Traps, Pitfalls, and Corner Cases"一書的內容,轉到 Python 語言中並看看這些陷阱會不會發生。
Python Puzzlers 系列文章皆參考"Java Puzzlers: Traps, Pitfalls, and Corner Cases"一書的內容,轉到 Python 語言中並看看這些陷阱會不會發生。
謎題一:判斷奇數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class Oddity { public static boolean isOdd(int i) { return i % 2 == 1; } public static void main(String[] args) { for(int i = -3; i <= 3; i++) System.out.println(i + ":" + Oddity.isOdd(i)); } } |
x
此書提到在 java 中,上述的程式碼有1/4的機率會不對,為什麼呢?原因是負奇數 % 2 會得到 -1。例如 -5 % 2 = -1 而 -1 == 1 不成立。那在Python中呢?請執行底下程式就知道結果了:
1 2 3 4 5 6 | def isOdd(n): print( n%2 ) return n % 2 == 1 for i in range(-5, 5): print(i) print(isOdd(i)) |
沒有留言:
張貼留言