2016-06-23 3 views
-3

파이썬에서 조건부 문제를 어떻게 극복 할 수 있습니까? 문제는 특정 조건에 따라 특정 텍스트가 표시되어야한다는 것이지만 입력이 아니요 인 경우 어쨌든 예 조건부 데이터를 나타냅니다.파이썬의 기본 코드

def main(y_b,c_y): 
    ans=input('R u Phil?') 
    if ans=='Yes' or 'yes': 
      years=y_b-c_y 
      print('U r',abs(years),'jahre alt') 
    elif ans=='No' or 'no': 
      print("How old r u?") 
    else: 
      print('Sorry') 

main(2012,2016) 
+0

또한 서식을 읽으십시오. 다음 번에 도움이된다. 그래서 SO는 원시가 아닌 markdown을 사용한다. HTML – jonrsharpe

+0

'ans == '예'또는 '예'는 거짓이며, 당신은 그 이유를 알았다. 그러나 나는 입력을 소문자로 변환하고'yes'와 비교하는 것이 낫다고 생각합니다. – qvpham

답변

3

or이 포함됩니다. 따라서 yes 테스트는 항상 통과합니다. 왜냐하면 ans != 'Yes' 다른 조건 yes에는 true 값이 있기 때문입니다.

>>> bool('yes') 
True 

로 대신 테스트해야합니다 : 그것은 다른 언어 다르지 않다

if ans in ('Yes', 'yeah', 'yes'): 
    # code 
elif ans in ('No', 'Nah', 'no'): 
    # code 
else: 
    # more code 
+0

일반적으로 그는'[...]]'을 사용해야합니다.이 경우'string.lower() == "yes"'를 사용하면 조금 더 명확해질 수 있습니다 –

2

if 문을 쓰고 여러 조건문이있는 경우 두 조건문을 모두 작성하고 비교해야합니다. 이것은 잘못된 것입니다 :

if ans == 'Yes' or 'yes': 

을이 괜찮 :

if ans == 'Yes' or ans == 'yes': 
1

:

if ans.lower() == 'yes': 
: 당신이 간단한 테스트를 사용 할 수 그러나

def main(y_b,c_y): 
    ans = input('R u Phil?') 
    if ans == 'Yes' or ans == 'yes': 
      years = y_b-c_y 
      print('U r', abs(years), 'jahre alt') 
    elif ans == 'No' or ans == 'no': 
      print("How old r u?") 
    else: 
      print('Sorry') 

main(2012,2016) 

관련 문제