我知道這聽起來很愚蠢,但我不能爲我的生活弄清楚這個for循環返回13,11,9,7背後的邏輯。簡單的循環需要解釋
for i in range(13,5,-1):
if i % 2 != 0:
print i
我知道第一個值是它開始的數字,第二個是它停止的位置,第三個是它所需的步驟。 「如果我%2!= 0:」是什麼讓我失望。任何人都可以解釋我發生了什麼嗎?
我知道這聽起來很愚蠢,但我不能爲我的生活弄清楚這個for循環返回13,11,9,7背後的邏輯。簡單的循環需要解釋
for i in range(13,5,-1):
if i % 2 != 0:
print i
我知道第一個值是它開始的數字,第二個是它停止的位置,第三個是它所需的步驟。 「如果我%2!= 0:」是什麼讓我失望。任何人都可以解釋我發生了什麼嗎?
第一位是range(13,5,-1)
,它從13
倒數到6
。接下來的是i%2 != 0
。 i%2 == 0
相當於說if even
,或者「如果這個數字可以除以2無餘數」,所以你的陳述是說「if odd
」(這顯然與「if not even
」相同)。
基本上,環路打印開始在13和遞減降到6奇數(但6是偶數,所以它不會印刷)
那真是太棒了!謝謝! –
@ChrisSummerhays - 沒問題:)。樂於幫助。 – mgilson
%是模運算符。從docs:
%(模)運算符產生了由第二所述 第一個參數的除法的餘數。數字參數首先被轉換爲通用類型 。零正確的參數引發了ZeroDivisionError異常。參數可以是浮點數 數字,例如,3.14%0.7等於0.34(因爲3.14等於4 * 0.7 + 0.34。) 模運算符總是產生與其第012個操作數(或0)相同符號的結果。結果的絕對值嚴格爲 小於第二個操作數的絕對值。
if i % 2 !=0
那行表示「如果我除以2後餘數不等於0」,因此它檢查以查看是否i是奇數。 for循環正在減1,但if語句跳過打印偶數。
這不是很久以前的問題嗎?我目前似乎無法找到它。 – DSM
ummm。我希望不是。我搜查了一下,沒有看到任何解釋我在找什麼的東西。對不起,如果我犯了一個錯誤。 –
我找到了。大約兩個小時前原來的問題被刪除了,這就是爲什麼它沒有出現,可能是爲什麼你找不到它。 – DSM