2012-09-07 58 views
2

我知道這聽起來很愚蠢,但我不能爲我的生活弄清楚這個for循環返回13,11,9,7背後的邏輯。簡單的循環需要解釋

for i in range(13,5,-1): 
     if i % 2 != 0: 
      print i 

我知道第一個值是它開始的數字,第二個是它停止的位置,第三個是它所需的步驟。 「如果我%2!= 0:」是什麼讓我失望。任何人都可以解釋我發生了什麼嗎?

+0

這不是很久以前的問題嗎?我目前似乎無法找到它。 – DSM

+0

ummm。我希望不是。我搜查了一下,沒有看到任何解釋我在找什麼的東西。對不起,如果我犯了一個錯誤。 –

+0

我找到了。大約兩個小時前原來的問題被刪除了,這就是爲什麼它沒有出現,可能是爲什麼你找不到它。 – DSM

回答

3

第一位是range(13,5,-1),它從13倒數到6。接下來的是i%2 != 0i%2 == 0相當於說if even,或者「如果這個數字可以除以2無餘數」,所以你的陳述是說「if odd」(這顯然與「if not even」相同)。

基本上,環路打印開始在13和遞減降到6奇數(但6是偶數,所以它不會印刷)

+0

那真是太棒了!謝謝! –

+0

@ChrisSummerhays - 沒問題:)。樂於幫助。 – mgilson

3

%是模運算符。從docs

%(模)運算符產生了由第二所述 第一個參數的除法的餘數。數字參數首先被轉換爲通用類型 。零正確的參數引發了ZeroDivisionError異常。參數可以是浮點數 數字,例如,3.14%0.7等於0.34(因爲3.14等於4 * 0.7 + 0.34。) 模運算符總是產生與其第012個操作數(或0)相同符號的結果。結果的絕對值嚴格爲 小於第二個操作數的絕對值。

2
if i % 2 !=0 

那行表示「如果我除以2後餘數不等於0」,因此它檢查以查看是否i是奇數。 for循環正在減1,但if語句跳過打印偶數。