python-중간테스트

김경천·2021년 5월 24일
1

"get_find" 함수를 작성하세요.

문자와 문자열이 주어졌을때, "get_find" 함수는 주어진 문자열에서 함께 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

Notes:

  • 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
  • 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
  • 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
  • find 함수를 사용하지 마세요.
output = get_find('a', 'I am a hacker')
print(output) # --> 2

내 풀이 틀렸음

def get_find(char, str):
    # 아래 코드를 작성해주세요.
  for i in str:
    if i ==char:
      return str.index(i)
      break
    else:
      return -1

print(get_find('a', 'i am a hacker'))

-> -1만 나옴 

정답코드1


def get_find(char, str):
    # 아래 코드를 작성해주세요.
  for i in str:
    if i == char:
     return  str.index(i)
     
  if i != char:
    return -1

print(get_find('a', 'i am a hacker'))
-> 2 나옴

해석: 내풀이를 보면 return= -1 되어 함수가 종료되었다.
retuen은 함수를 종료시키기 때문에 for문이 반복 되지않고 -1을 출력된것이다.
그래서 else문을 지우고 if를 한번 더써서 -1값을 리턴받았다.

정답코드2

def get_find(char, str):
  try:
    return str.index(char)
  except:
    return -1

해석: 예외처리를 통해 try블록을 수행하여 오류가발생하면 except가 실행되여 -1을 리턴하고
try블록이 오류가 발생하지않으면 except가 실행되지 않는다.

return 에 대해서

  • 값 돌려준다.
  • 함수 즉시 종료한다.
def sqare(x):
	print("시작")
    	print x * x
    	print("끝")
     
 print(sqare(3))
 print("hello world")

 
 retrun 문이 함수를 즉시 종료시키기 때문에 
 Dead Code(의미없는 코드)가 되어 출력되지 않는다.
 시작
 9
 hello world
print와의 차이점

def print_squre(c):
	print ( c * c)
   
def get_squre(c):
	return c * c
 

-> 파라미터에 3 전달시
9
None

None이 출력되는 이유?
함수 이름처럼 get은 그 값을 가지고 있지만 출력되지 않아 None이라고 표시되는듯하다.
profile
화이팅

0개의 댓글