2013-07-04 35 views
1

我想將多個字符串放在一個聲明一行:如果在用戶輸入中有str('a')或str('b')或str('c')然後做任何事情

input = str(raw_input('')) 
if str('a') or ('b') or ('c') in str(input): 
    print "a string" 
else: 
    print "no" 

是否有可能有在聲明一個多個字符串?

+0

我認爲你可以這樣做:'如果(輸入('a','b','c')):' –

+0

@GrijeshChauhan不,這將檢查'輸入'是否等於這三個字符串中的任何一個。 – poke

+0

@poke是的,這不是他想要的嗎? –

回答

3

這是,但你寫的是做了完全不同的事情。它檢查str('a')是否真實,如果'b'是真的,或者'c'input。雖然Python非常易讀,但它不會對你寫的內容做出假設。你必須要明確:

if 'a' in input or 'b' in input or 'c' in input: 
    ... 

或者:

strings = ('a', 'b', 'c') 

if any(s in input for s in strings): 
    ... 

調用str()使用字符串參數,是沒有意義的。另外,input是內建的名稱,所以我建議你重命名你的變量。

+0

應該是'any()',而不是'all()'。 –

+0

第二個解決方案不是'AND'條件而不是'OR'條件?好的,已經更正了:) – Paranaix

+0

@LeeDanielCrocker:是的,謝謝。 – Blender

6

首先str('a') == 'a'(因爲'a'已經是一個字符串),所以你可以不要這樣。

'a' or 'b' or 'c' in input 

該表達式解析爲以下幾點:

('a') or ('b') or ('c' in input) 

所以你檢查是否'a''b' evalute爲true,這是這種情況。如果你想檢查它們全部採用in運營商,你必須明確地規定:

'a' in input or 'b' in input or 'c' in input 

您也可以簡化,那麼:

any(x in input for x in ('a', 'b', 'c')) 
+0

其「輸入」應該由「a」,「b」,「c''組成? –

+1

@GrijeshChauhan相反,如果任何'a','b'或'c'是'input'的子串。所以'foo'將是錯誤的,但'bar'會是真的,因爲'a'在那裏。 – poke

相關問題