2013-11-02 6 views
0

프로그램 동작을 과 일치하게 만드는 파이썬 코드로 상자를 채 웁니다. 코드를 변경하거나 괄호 "()"바깥에 코드를 추가 할 수 없습니다. 한 줄에 반환 함수

def bypass_line(age, has_acces_card): 
''' (int, bool) -> bool 
Return True if and only if the person's age is greater than 50 or 
they have a access card as indicated by has_access_card. 
''' 


return (     ) 

내가 뭐하는 거지 연습 질문입니다. 그리고

이다 ... 내가 코드를 작성하는 방법을 알고, 딜레마에서 오전 :

def bypass_line(age, has_vip): 
    if age >70 or has_vip =="yes": 
     return True 
    return False 

하지만 어떻게 내가() 나는 대답했다 있도록 코드 한 줄을 쓰기 않습니다 문제? 이처럼

답변

2

:

def bypass_line(age, has_acces_card): 
    return age > 50 or has_acces_card == "yes" 

이 기본적으로 경우 문에 의해 평가되는 표현 자체를 반환합니다. if 문에서 표현식이 이미 True 또는 False 중 하나를 반환하기 때문에 여기에서도 동일하게 적용됩니다.

+0

? 그럴 수있어? – user2891763

+0

@ user2891763 : 표현식의 결과를 반환 할 수 있습니다. 표현식 * 자체 *가 이미'True' 또는'False' 인 경우, 바로 그것을 직접 반환하십시오. –

3

if 표현 이미의 결과는 부울 값입니다. True 또는 False입니다. 당신은 직접 반환 할 수 있습니다

return age > 70 or has_vip == "yes" 

이 본질적으로 무엇인지에 대한 if 테스트; 표현을 사용하여 bool()으로 전달하고 True 또는 False인지 확인합니다. bool()는 자체가 이미 True 또는 False 돌아 비교 연산자 (>==) 여기에 필요하지 않습니다 : 당신의 bypass_line 기능의 내부

>>> age = 60 
>>> age > 70 
False 
>>> age = 80 
>>> age > 70 
True 
0

을 할 수 있습니다 좀 더있어 간단하게 쓰기

return age > 50 or has_acces_card == "yes" 

C++ 사용자의 경우이 코드를 정리하는 것을 선호합니다. 그것은 내가 더 분명하게 생각하도록 돕는다.

return (age > 50) or (has_acces_card == "yes") 
사람 중 하나

  • 나이 때문에 (이상 50
  • 가 액세스 카드 중 하나에 해당하는 경우

을 가지고있는 경우

어느 쪽이든, 코드는 간단하게 확인 or) 함수는 True을 반환합니다. 그렇지 않으면 거짓을 반환합니다.

논리는 정확히 if 문에서와 동일는 True 또는 False 대신 return 문에 사용되는 결과 단지이다 (당신은 여전히 ​​결과가 다른 곳에서 사용되는 동일한 표현을 가지고). 함수의 인수로 변수의 정의 인 print과 같이 어디서나 그 표현을 사용할 수 있습니다 ...논리는 항상 동일합니다.