20.04.07(Tue) 스파르타 3주차 복습_Python 반복문 연습 문제

.·2020년 4월 7일
1

스파르타코딩클럽

목록 보기
10/14

1. 반복문의 형태

  • 자바스크립트에서
  a_list=["사과", "배", "딸기"]

  for(let i=0; i<a_list.length; i++){
            console.log(a_list[i]);
        }
  • 파이썬에서
  a_list=["사과", "배", "딸기"]
  for a in a_list:
  	print(a)
  • a_list 라는 하나하나 순서대로 배열된 것을 요소 하나하나 순서대로 뽑아오고 (반복문으로다가) 그 명칭을 a 라고 하자. 그 때 a 를 인쇄해줘!! 라고 말하는 거.

2. 반복문 연습

2-1. 연습 Level - 1. 반복문과 조건문의 응용

  • 해당되는 이름이 배열 내에 있으면 나이를 출력해주고, 없으면 해당되는 이름이 없다는 문장을 띄워준다. 이름을 받으면 나이 값을 리턴해주는 함수.
people = [{'name': 'bob', 'age': 20},
          {'name': 'carry', 'age': 38},
          {'name': 'john', 'age': 7}]
  • 시작하기 전에 보너스
## 반복문을 이용해서 각 딕셔너리 별로 키와 밸류를 추가해 줄 수 있다.
for person in people:
	person['address'] = '대치동'
print(people) >>> 각 배열 내 'address':'역삼동' 이 추가 되어 있음을 확인할 수 있다.
  • 나의 접근법 : 안되드라...
 def get_age(name):
     for person in people:
         if get_age(name) == person['name']:
             print(person['age'])
         else:
             print('해당하는 이름이 없습니다')

         get_age('bob')
  • 정답
def get_age(name):
    for person in people:
        if person['name'] == name:      ## 대괄호는 배열로 얻어온거라서?
            return person['age']	## person의 키 'name' 이 인자 name과 일치하면?
    return '해당하는 이름이 없습니다'
        
print(get_age('john'))
  • 느낀 점
    : 접근방식은 일단 name 이란 것을 넘겨줬을 때 name 에 해당하는 사람이 있는지 보고 있으면 나이를 찍어주고 없으면 '해당하는 이름이 없습니다' 표시해 보는 거였다.
    복습강의를 먼저 보기 전에 멈춰놓고 풀어볼랬는데 접근은 좋았으나 (내생각) 오답이였다.
    정답을 보고 수긍했지만 정답에도 2가지 방식이 있다는 것을 알게 되었다.
    먼저 for 문 다음 if 문이 참이면 무언가를 리턴하면 거짓일 때 else 를 쓰지 않는가?
    이렇게 해도 되지만 else 를 아예 안쓰고 if 문이 거짓이면 for 문의 선상으로 빠져나와서
    return '해당하는 이름이 없습니다' 라고 코딩해도 원하는 값을 얻을 수 있다.

2-2. 연습 Level - 2. 메일주소가 맞는지 판단하기

  • 임의의 메일주소를 선언해 놓고, 이게 메일주소가 맞는지 (True) 아닌지 (False) 판단하기

  • 메일주소가 맞는지 어떻게 판단할까?
    : 여러 방법이 있지만 @ 골뱅이(at sign) 가 있으면 메일주소, 없으면 아닌걸로 하자.

  • 임의의 메일주소
    : teddybearjung8808@gmail.com (실제 없는 주소임)

  • 나의 접근법 : 구글에 파이썬 조건문 문자열 찾기 >>> if in 을 쓰면 되는구만?

a = teddybearjung8808@gmail.com

def check_mail(s):
    if '@' in s:
        return 'True'
    else:
        return 'False'


print(check_mail(a))
True
  • 정답 ^_^
    : 구글검색 을 잘 하자. 그리고 조건문 내 True 와 False 는 작은 따옴표로 싸 줄 필요가 없었다.

2-3. 연습 Level - 3. 메일주소의 도메인 찾아 출력하기

  • 임의의 선언된 메일주소의 도메인, gmail 이면 gmail, naver 이면 naver 를 출력해주는 코드를 짜는 것.

  • 제이쿼리 실습 할 때, 스플릿 이거 같기는 한데 어떻게 파이썬 문법에서 접근할 지 파악이 안됨.

  • 강의를 보고 따라하려다 선생님이 문자열을 나누는 걸 검색해야 되요 하길래 냅다 멈추고,

  • "파이썬 문자열 자르기" 로 검색했다.

  • 나의 풀이

a = 'spartacodingclub@gmail.com'

#채워야하는 함수
def get_mail(s):
    if '@' in s:
        return s.split('@')[1].split('.')[0]
    else:
        return 'it is not an email'

#결과값
print(get_mail(a))

#아래와 같이 출력됩니다
gmail
  • 정답
a = 'spartacodingclub@gmail.com'
def get_mail(s):
	return s.split('@')[1].split('.')[0]
print(get_mail(a))
gmail
  • 느낀 점
    : 정답도 좋지만 메일이 먼저 맞는지 확인하고 도메인을 출력하는 나의 방법은 기가 맥혔다.

2-4. 연습 Level - 4. 리스트 안의 과일 개수 세기

  • a 라는 리스트를 넘겨줬을 때, 그 안에 있는 녀석들의 수를 계산해서 입력해 주면 되는 내용. 인쇄되는 대상이 딕셔너리 이므로 돌려줄 딕셔너리를 만든다고 설명하심.
a = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']
def count_list(a_list):
  result = {}           ## 인쇄되는 대상이 딕셔너리 이므로 돌려줄 딕셔너리 선언함.
  for fruit in a_list:
    if fruit in result:
      result[fruit] += 1  ## 얘는 1을 더해주고
    else:
      result[fruit] = 1   ## 얘는 1을 넣어주고
  return result
  {'사과': 1, '감': 3, '배': 1, '포도': 3, '딸기': 2, '수박': 1}
  • 어려워서 못풀고 강의를 보며 이해해보았음
  • 느낀 점
    : result[fruit] += 1 에서 [ ] 왜 대괄호로 묶은걸까? a 가 대괄호로 묶인 배열이라 그런건가 하고 셀프 뇌이징 하였다.
    : 정답이 딕셔너리로 출력되는 것을 확인할 수 있었다. 그럼 왜 딕셔너리로 출력을 하는거지?
    사과는 몇 개? 사과 : 3개, 포도는 몇 개? 포도 : 7개 이런 구성은 키와 밸류로 구성되니까 딕셔너리를 써야 한다.(뇌이징)
    : 특정 키가 딕셔너리에 있는지 없는지 확인하는 방법은 조건문에 in 을 사용하는 것!
profile
.

0개의 댓글