2012-10-27 3 views
0

단어의 모음을 계산할 때 함수가 두 가지 유형의 값, 문자열 및 정수를 반환하도록합니다. 호출시 y 값만 가져 오지만 x 값은 가져 오지 않습니다. 왜 이런 일이 일어날 수 있는지 설명해 주시겠습니까?파이썬 함수가 두 번째 값을 반환하지 않습니다.

def cnt_vow(s): 
    x = 0 
    y = '' 
    for char in s: 
     if char in 'aeuio': 
      y = y + char 
      x = x + 1 

    return y 
    return x 

cnt_vow('hello') 

예상 : 'eo', 2

했다 : 당신이 모두를 원하는 경우 'eo'

답변

2

return x,y 

return는 항상 현재의 기능을 잎 튜플을 반환하려고, 그래서 코드는 않을 것입니다 후 처형되다.

+0

네, 그것은 그런 식으로 작동합니다. 따라서 return 명령은 두 번째 return 문을 알지 못하고 루프에서 값을 반환합니다. – minerals

+0

@ minerals : 수정하십시오. 'return x'을 '내가 x라고 불렀던 곳으로 돌아가 x 지금 이곳을 떠나라'라고 읽는다. – Junuxx

2

여러 값을 반환하는 튜플을 사용해야합니다 :

return (y, x) 

하면 괄호는 일반적으로 옵션 곳. 이 함수를 호출 할 때

, 당신은 다시 두 개의 값을 풀 수 :

vowels, count = cnt_vow('hello') 

를 파이썬 함수 실행이 종료 return 문을 보게되면, 두 번째 문에 도달되지 않습니다.

1

코드가 첫 번째 return 문에 도달하면 지정된 값을 즉시 반환합니다.

은 무엇 당신이 찾고있는 것은 :

return y, x 
관련 문제