2015-05-12 77 views
0

我如何用Python語言編寫的for循環,我把它寫在C:for循環轉換,從C到Python的

for(i=0;i<10;) 
{ 
    if(i%2==0) 
     i=i+3; 
    else 
     i++; 
    printf("%d\n",i); 
} 

誰能告訴我這件事嗎?我搜查了很多,但無法找到它。我用Python寫的是這樣的:

for i in range(0,10): 
    if (i%2==0): 
     i+=3 
    else: 
     i+=1 
    print i 

輸出:

3 
2 
5 
4 
7 
6 
9 
8 
11 
10 

預期輸出:

3 
4 
7 
8 
11 

任何人都可以也解釋了該輸出的原因是什麼?

+0

你期望輸出什麼? – jonrsharpe

+0

輸出看起來很好 – Ajay

+0

由於我新的python我無法理解輸出,請向我解釋@Ajay – Subinoy

回答

5

爲了用Python語言編寫同樣的循環:

i = 0 
while i < 10: 
    if i % 2 == 0: 
     i += 3 
    else: 
     i += 1 
    print i 

其中給出:

3 
4 
7 
8 
11 

而且,每the tutorial

Python中的for語句從不同的位你可能會用C或Pascal中的 。 Python的for語句不是迭代遍歷算術數字的進展(如Pascal),或者賦予用戶定義迭代步驟和停止條件(如 C)的能力,Python的for語句迭代任何序列的項目(一個 列表或一個字符串),按照它們出現在序列中的順序。

在Python for循環,當循環重複,並且來自物體的下一個值被遍歷使用循環期間發生的任何變化對循環變量(i,在這種情況下)將被忽略。在這種情況下,對象是數字的列表:

>>> range(10) # note that a 0 start is the default 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

一些語言稱其爲for each循環。有關更多詳細信息,另請參見the language reference

+0

我明白了一切@jonrsharpe – Subinoy

2

range(0, 10)函數返回從0到9的值的列表:

range(0, 10) == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

然後for體爲在該列表中的每個元素執行。 如果你有0,0%2 == 0,所以它打印0 + 3等。 在C中你改變了i的值,所以你跳到其他值集。使用python的for您將通過所有元素。您應該使用

i = 0 
while i < 10: 
    if (i % 2 == 0): 
    i += 3 
    else: 
    i += 1 
    print i 

要具有相同的結果。C

+0

感謝您的解釋,實際上我忘記了python的工作方式,非常感謝 – Subinoy

0

試試這個

for i in range(10): 
    if i%2 == 0: 
     i = i+3 
    else: 
     i = i + 1 
    print i 

它給出了相同的輸出u問的...希望這可以幫助

+0

初始化在哪裏? – Subinoy

+0

爲什麼我們在使用範圍(0,10)時無法設置步驟,爲什麼我們必須專門使用範圍(10)? – Subinoy

+0

我們可以通過範圍(0,10,步),但步不能爲0,所以它不會滿足你想實現的目標 –