5/8 Today I Learned

boks·2024년 5월 8일
post-thumbnail

📖 학습한 내용

  • 딕셔너리 자료형
  • while 반복문
  • 함수

📖 핵심내용

📌딕셔너리 자료형

1. 딕셔너리 선언

  • 형태
딕셔너리 = {
    키:값,
    키:값,
    ...
    키:값
    }
  • 키:값 형태로 쉼표,로 연결해서 만듬
  • 키는 문자열, 숫자 , 불등으로 선언가능하다. 일반적으로는 문자열로 사용하는 경우가 대다수
  • 딕셔너리는 중괄호{}로 선언

2. for반복문

  • 형태
for **key 값** in 딕셔너리:
    코드
  • for문으로 딕셔너리를 출력하면 key값이 반환된다
for key in sample_dict:
    print(key)

  • value는 key를 줘서 출력할 수 있다. 따라서 다름과 같이 출력할 수 있다.
for key in sample_dict:
    print('{:5s}: {}'.format(key, sample_dict[key]))

3. 딕셔너리 관련 함수

keys()

  • 딕셔너리의 키만 가져오는 함수
  • 형태
    딕셔너리객체.keys()
  • dict_keys 자료형

values()

  • 딕셔너리의 벨류만 가져오는 함수
  • 형태
    딕셔러니객체.values()
  • dict_values 자료형

items()

  • 딕셔너리의 벨류와 키를 모두 가져오는 함수
  • 형태
    딕셔너리객체..items()
  • dict_items 자료형

📌range() 함수

  • 형태
    range(start, stop, step)
  • stop은 반드시 쓰어야한다.
  • start 디폴트=0 생략가능
  • step 디폴트=1 생략 가능
  • range 자료형이다.

📌while 반복문

기본 사용 방법

  • 형태
while 불 표현식:
    코드
  • while 반복문은 좀 더 범용적으로 사용하는 반복문 (무한번 반복 가능)
  • <불 표현식>이 참인 동안 코드부분을 계속 반복

for 반복문 처럼 사용하기

i = 0
while i < 10:
print('{}번째 반복입니다.'.format(i+1))
i += 1

-> i가 반복문 내에서 커지게 만들어 결국 범위를 벗어나서 반복문 종료

상태 기반으로 반복하기

sample_list = [1,2] * 2
value = 2
print(sample_list)

while value in sample_list:
    sample_list.remove(2)
    print(sample_list)

print(sample_list)

-> sample_list에서 요소 2를 반복 제거
-> 모두 제거하면 반복문 종료
-> while, remove를 사용해서 구현

시간 기반으로 반복하기

# 5초 후에 반복을 멈추는 반복문
number = 0

stop_time = time.time() + 5
while time.time() < stop_time:
    number += 1

print('약 5초 동안 {}번 1을 더했습니다.'.format(number))

-> 유닉스 타임에 5초를 더하여 5초가 지나면 반복문 종료

break 키워드

  • 조건에 따라 발생하게 만들고 필요할때 사용한다.
  • 조건문 바로 상위단계로 나간다.
for element in sample_list:
    if element != 103:
        print(element)
    else:
        break

-> sample_list의 요소를 조회하다 103이 아닐때 break 키워드 실행하여 반복문을 나간다.

continue 키워드

  • 키워드 이후 문장을 실행하지 않고, 해당 조건문의 시작으로 돌아간다.
for element in sample_list:
    if element == 103:
        continue
    print(element)

-> sample_list의 요소를 조회하다 103이 되었을때, 바로 다음 구문인 print(element) 실행하지 않고 for element in sample_list:로 이동

📌함수

1. 기본 용어

  • 함수를 호출 : 함수를 사용하는 것
  • 매개변수 : 함수를 호출할 때 괄호 안에 넣는 여러가지 자료형들
  • 리턴값 : 함수를 호출해서 최종적으로 나오는 결과

2. 함수 기본 선언

def 함수 이름():
    코드

3. 함수 매개변수

  • 형태
def 함수 이름(매개변수, 매개변수, ...):
    코드
  • 함수 호출시 대응하는 매개변수에 따라 함수의 코드에 영향을 준다.
  • 예시
def print_n_times(value, n):
    for i in range(n):
        print(value)
        
print_n_times('안녕하세요', 3)

-> '안녕하세요', 3 를 매개변수로 받았다. range(n), print(value)이 영향을 받아 작동하였다.

매개변수와 관련된 TypeError

  • 예시로 설명
  • 함수
def print_n_times(value, n):
    for i in range(n):
        print(value)

1) 함수에 매개변수를 1개만 넣은 경우
-> 타입에러 발생

2) 함수에 매개변수를 2개 이상을 넣은 경우
-> 타입에러 발생

📖 흥미로운 점 / 새로 알게된 점

  • 가변 매개 변수 여러 매개변수를 받을 수 있다는 점에서 흥미로웠다. 활용하기 어려워보이긴해도, 파이썬을 잘하게되면 아주 유용할 것 같았다.

📖 어려운 부분

다중 반복문에서의 break 이동

👉 break 키워드를 배울때, 전시간에 for문을 배우며 다중 반복문을 배웠다. 그래서 다중 반복문에서 break 키워드를 만나면 가장 상위의 반복문에서 나가는지 아니면 바로 상위의 반복문으로 이동하는지 헷갈렸다.
이 문제를 강사님께 물어봤는데, 바로 예시를 들어 답변을 해주셨다.

for i in range(1,6):
  print(i)
  for j in range(11,16):
    print(j)
    if j > 13:
      break

-> 예시를 보면 첫 반복 안에 두번째 반복문이 있는데, 첫 반복문은 i가 1~5까지 차근 차근 반복되는 것이 보인다. 하지만 두번째 반복문은 j가 11~14까지 반복되다가, j가 13이 초과된 시점에 반복을 멈추고, 첫번째 반복문으로 이동한다.

📖 이후 학습 계획

  • 파이썬 기초에 대해 강의를 마저 들을 생각이다. 다음에 있을 파이썬 기초 수업 항목이다.
    - 튜플 자료형
    - 람다 함수
    - 예외 처리
    - 클래스
    - 모듈

📖 기타

미니 퀴즈

1. 딕셔너리 검색 프로그램 만들기

sample_dict = {
    'name' : '범죄도시 4',
    'type' : ['범죄','액션','스릴러','느와르','코미디','형사'],
    'actor' : ['마동석','김무열','박지환','이동휘'],
    'show' : '개봉중'
}
input_key = input('키를 입력하시오')
serch = (input_key in sample_dict)
if serch:
  print(sample_dict[input_key])
else:
  print('존재하지 않는 키에 접근하고 있습니다.')


-> 딕셔너리에서 벨류값은 키값을 조회하여 알 수 있다. 키값을 입력 받아서 벨류값을 찾았다. '벨류 = 딕셔너리객체[키] ' 를 알면 매우 쉬웠다.

2. range()함수로 안녕하세요 8번 출력하기

for i in range(8):
  print('안녕하세요')


-> range()와 for문을 이용하면 매우 쉬웠다.

3. 피라미드만들기

  • 문자열 반복연산자를 이용하여 10층 피라미드만들기
star = '*'
for i in range(1,11):
  print(star * i)

  • 문자열 반복연산자를 이용하지 않고 10층 피라미드만들기
for i in range(1,11):
  for j in range(i):
    print('*',end='')
  print()


-> end=''(개행 방지)를 이용해서 이중 for문을 이용하여 만들었다.

  • 중앙 피라미드 이용하여 10층 피라미드만들기
space = ' '
star = '*'
for i in range(1,11):
  for_space = 10-i
  print(space*for_space, star*(2*i-1))


-> 공백의 수를 줄여가고, 별의 수는 늘려가는 방식을 이용하여 만들었다.

4. 야구게임

ran_num = int('{}{}{}'.format(*random.sample(range(1, 9), 3)))
ran_str = str(ran_num)

print('정답 : ',ran_num)

strike = 0 # 조건식 초기화하여, 반복될 수 있도록함

while strike < 3: # strike 값이 3이 되면 반복종료
  user_str = input('예상하는 세자리 숫자를 중복없이 입력 (100~999) > ')

  strike = 0 # 반복되었을 때 값을 가지지 않도록 초기화
  ball = 0 

  for i in range(3):
    if int(user_str[i]) == int(ran_str[i]): # 스트라이크 값 찾기. 문자열 비교하여 같은 자리에 같은 값이면 실행
      strike +=1
    elif user_str[i] in ran_str: # 볼 값 찾기. 문자열 안에 있으면 실행
      ball +=1
    else:
      pass
  print('{}스트라이크,  {}볼'.format(strike, ball))

profile
설계엔지니어의 변신

0개의 댓글