2016-10-08 35 views
0

很抱歉,對於這個肯定簡單的答案,但我似乎無法弄清楚如何將if ______ in ____:塊嵌套到現有的for塊中。如何在Python for循環迭代過程中產生異常

例如,我將如何更改此塊來遍歷每個i實例,省略奇數。

odds = '1 3 5 7 9'.split() 
for i in range(x): 
    if i in odds: 
     continue 
    print(i) 

此代碼爲if i == y,但我不能讓它與一組特定的「Y」的加工對象物S

+1

'odds'是字符串列表。 'i'是一個整數.. –

+0

如果你想從你的問題打印偶數或奇數號碼我也說不清。您正在使用範圍,這表明您正在尋找迭代一系列值而不是列表的值。您可能需要澄清這一點。 – Sarcoma

+0

我正在尋找一種排除i在for循環中的方法。我剛剛給了這個例子,因爲它很簡單,我寫的實際程序更復雜。在這個例子中,我希望每個變量都可以迭代,但是隻有在已經打印完畢後纔會打印出「繼續」語句。 – Vendelisk

回答

4

此無關築巢。您正在比較蘋果和梨,或者在這種情況下,試圖在str對象列表中找到int

因此if測試從未匹配,因爲列表['1', '3', '5', '7', '9']中沒有1;沒有3579,因爲整數是與字符串不同類型的對象,即使該字符串包含的數字看起來像人一樣,也就是數字。

無論你的INT轉換爲字符串第一,或將您的字符串爲整數:

if str(i) in odds: 

odds = [int(i) for i in '1 3 5 7 9'.split()] 

如果你想測試奇數,有一個更好的測試;檢查是否除以2的餘數是1:

if i % 2 == 1: # i is an odd number 
0

如果您正在尋找迭代一個範圍偶數的,那麼這樣的事情應該工作。 X是一個整數。 2是一步,所以這會省略奇數。

for i in range(0,x,2): 
    print(i) 

欲瞭解更多的信息在這裏檢查出的文檔:

https://docs.python.org/2/library/functions.html#range

我跑一對夫婦與您所提供的代碼中的問題,繼續將只是通過對打印語句和下降值爲odds,其中字符不是整數,意味着比較失敗。

創建整數列表,並使用not in代替in將解決這個問題。

x = 10 
odds = [1, 3, 5, 9] 
for i in range(x): 
    if i not in odds: 
     print(i)