2014-01-28 6 views
-2
code_str = input("Enter code: ") 

while code_str !="Q": 
    print("Code:",code_str) 
    if code_str == 'B' and code_str == "D" and code_str == "W": 
     print("Good Code.") 
    else: 
     print("Bad code. Try Again") 
    code_str = input("Enter code: ") 

사용자가 B, D 또는 W를 입력 할 때마다 Good Code를 인쇄하지만, 알아낼 수는 없습니다. 감사! code_str"B""D" 동일 동일 둘 수 없을 것이기 때문에Python "IF"문

+1

항상 "잘못된 코드"가 출력되어야합니다. 제 생각 엔 – Sheng

+2

'과'? 그게 어떻게 효과가 있니? –

+2

질문을 편집하여 완전히 다른 질문으로 바꾸지 마십시오. 새로운 것을 요구하십시오. – user2357112

답변

0
if code_str == 'B' and code_str == "D" and code_str == "W": 

위의 경우 문장의 조건은 항상 False로 평가됩니다. 당신이 in를 사용할 수

if code_str == 'B' or code_str == "D" or code_str == "W": 

또는 :

이 문제를 해결하려면, 당신은 and 대신 or를 사용할 필요가

if code_str in ("B", "D", "W"): 

편집 :

귀하의 업데이트 내용 질문, 당신은 str.lower 사용할 수 있습니다

while code_str.lower() != "q": 
2

을 code_str가 B 경우, 그것은 가능성이 동시에 DW 수 없습니다!

당신은 변경할 필요가 귀하의 andor에 :

if code_str == 'B' or code_str == "D" or code_str == "W": 

또는 조금 단순화하기 :

if code_str in ('B', 'D', 'W'): 

이 다음은 더욱 간단하지만 BD 일치하고 DWBDW 및 비어 있음 문자열뿐만 아니라. 이미 하나의 문자로 입력을 소독 한 경우는 그래도 괜찮아요 :

if code_str in 'BDW': 
+2

또는 더 간단하게하기 위해서 :''BDW "' –

+0

좋은 전화.하지만 어쩌면 너무 많이 가르치고있을 수도 있습니다 :) – mhlester

+4

아니요, 튜플이 맞습니다. 우리는'BD '를 입력으로 허용하고 싶지 않습니다. – user2357112

0
if code_str == 'B' and code_str == "D" and code_str == "W": 

if code_str == 'B' or code_str == 'D' or code_str == 'W': 

또는 (더 나은)해야한다 :

if code_str in {'B', 'D', 'W'}: 
0

당신 것 조건 중 하나만이 True 인 경우 if 문을 True으로 보내야합니다. 조건이 모두있는 경우에만 True을 반환하기 때문에 and 연산자를 사용할 수 없습니다. 따라서 and 연산자를 or 연산자로 바꿔야합니다.