2013-07-04 3 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 아니요,'input '이이 세 문자열 중 하나와 같은지 확인합니다. – poke

+0

@ 포크 예, 그가 원하는 것이 아닙니까? –

답변

3

당신이 쓴 것은 완전히 다른 것을합니다. 'b'이 진실 인 경우 또는 'c'input 인 경우 str('a')이 진실인지 확인합니다. 파이썬은 매우 읽기 쉽지만, 여러분이 작성한 것에 대해서는 가정하지 않습니다. 당신은 명시해야한다 :

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

'all()'이 아닌'any()'이어야합니다. –

+0

두 번째 해결 방법은 'AND'조건이 아니라 'OR'조건입니까? Ok, already corrected :) – Paranaix

+0

@LeeDanielCrocker : 예, 감사합니다. – Blender

6

우선 str('a') == 'a' ('a'은 이미 문자열이므로),이를 제외 할 수 있습니다.

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

이 표현은 다음과 같은 구문 분석 :

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

그래서 당신의 경우 true로 'a' 경우 또는 'b' evalute를 점검한다. 당신이 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'는 false가되지만'bar'는'a'가 있기 때문에 true가됩니다. – poke