본 내용의 출처는 파이썬 코딩도장파이썬 300제에 있으며, 추가한 내용이 있을 수 있습니다.

파이썬 코딩 도장

Unit 20. FizzBuzz 문제

20.1 1부터 100까지 숫자 출력하기


🔎 FizzBuzz 문제 - 반복분, 조건문, 나머지 연산자, 비교 연산자 동원


...



20.2 3의 배수일 때와 5의 배수일 때 처리하기


🔎 3의 배수, 5의 배수일 때 Fizz, Buzz 출력


...



20.3 3과 5의 공배수 처리하기


🔎 3과 5의 공배수는? -> and 사용


...

  • 3과 5의 공배수를 먼저 검사한 뒤 elfi로 3의 배수, 5의 배수 검사해야 함.


20.4 논리 연산자를 사용하지 않고 3과 5의 공배수 처리하기


🔎 공통의 숫자로 공배수 구하기


...



20.5 코드 단축하기


🔎 FizzBuzz 문제 코드 단축하기

  • 코드 골프 방식
  • 문자열 곱셈을 이용해 3의 배수일 때 'Fizz' 출력 + 5의 배수일 때 'Bizz' 출력
  • 3과 5의 공배수의 경우 문자열 덧셈 이용


20.6 퀴즈




20.7 연습문제: 2과 11의 배수, 공배수 처리하기


1) i % 2 == 0 and i % 11 == 0
2) i % 2 == 0
3) i % 11 == 0


20.8 심사문제: 5와 7의 배수, 공배수 처리하기







Unit 21. 터틀 그래픽스로 그림 그리기

21.1 사각형 그리기


🔎 터틀 그래픽스(Turtle graphics) 모듈로 사각형 그리기


  • 픽셀 이동(forward)

  • 방향 바꾸기

    • 거북이의 방향을 오른쪽으로 90도 회전
  • 다시 100픽셀 이동

  • 사각형이 되도록 반복

정리

  • 앞으로 이동: forward, fd
  • 뒤로 이동: backward, bk, back
  • 왼쪽으로 회전: left, lt
  • 오른쪽으로 회전: right, rt


21.2 다각형 그리기


🔎 반복문을 사용해 사각형을 그리기


🔎 오각형 그리기


🔎 다각형 그리기


🔎 다각형에 색칠하기

참고: color에 색깔 지정하기

  • #000000: 검정
  • #FF0000: 빨강
  • #00FF00: 초록
  • #0000FF: 파랑




21.3 복잡한 도형 그리기


🔎 원 그리기


🔎 원 반복

정리 : speed

  • 'fastest': 0
  • 'fast': 10
  • 'normal': 6
  • 'slow': 3
  • 'slowest': 1

🔎 선으로 복잡한 무늬 그리기





21.4 퀴즈





21.5 연습문제: 오각별 그리기

t.forward(100)
t.right((360 / n) * 2)
t.forward(100)
t.left(360 / n)





21.6 심사문제: 별 그리기





Unit 22. 리스트와 튜플 응용하기

22.1 리스트 조작하기


🔎 리스트에 요소 추가하기

  • append: 요소 하나를 추가
>>> a = [10, 20, 30]
>>> a.append(500)
>>> a
[10, 20, 30, 500]
>>> len(a)
4
  • 리스트 안에 리스트 추가
>>> a = [10, 20, 30]
>>> a.append([500, 600])
>>> a
[10, 20, 30, [500, 600]]
>>> len(a)
4
  • extend: 리스트를 연결하여 확장
>>> a = [10, 20, 30]
>>> a.extend([500, 600])
>>> a
[10, 20, 30, 500, 600]
>>> len(a)
5
  • insert: 특정 인덱스에 요소 추가
>>> a = [10, 20, 30]
>>> a.insert(2, 500)
>>> a
[10, 20, 500, 30]
>>> len(a)
4
  • insert 패턴
    • insert(0, 요소): 리스트의 맨 처음에 요소를 추가
    >>> a = [10, 20, 30]
    >>> a.insert(0, 500)
    >>> a
    [500, 10, 20, 30]
    • insert(len(리스트), 요소): 리스트 끝에 요소를 추가
    >>> a = [10, 20, 30]
    >>> a.insert(len(a), 500)
    >>> a
    [10, 20, 30, 500]

🔎 반복문과 들여쓰기

  • 튜플은 값의 정보를 구하는 index, count 메서드만 사용할 수 있음.

🔎 인덱스로 범위를 지정하여 리스트 조작하기

리스트[len(리스트):] = []        # 리스트 끝에 값이 한 개 들어있는 리스트 추가
                                   # 리스트.append(값)과 같음
리스트[len(리스트):] = [,]    # 리스트 끝에 다른 리스트 연결
                                   # 리스트.extend([값, 값])과 같음
del 리스트[인덱스]    # 특정 인덱스의 값 삭제, 리스트.pop(인덱스)와 같음
del 리스트[:]   # 시작 인덱스와 끝 인덱스를 생략하여 리스트의 모든 값을 삭제, 리스트.clear()와 같음

🔎 리스트로 스택과 큐 만들기

  • deque 예시
>>> from collections import deque    # collections 모듈에서 deque를 가져옴
>>> a = deque([10, 20, 30])
>>> a
deque([10, 20, 30])
>>> a.append(500)    # 덱의 오른쪽에 500 추가
>>> a
deque([10, 20, 30, 500])
>>> a.popleft()     # 덱의 왼쪽 요소 하나 삭제
10
>>> a
deque([20, 30, 500])


🔎 특정 값 개수 구하기

  • count(값)
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.count(20)
2

🔎 리스트 순서 뒤집기

  • reverse()
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]

🔎 리스트 요소 정렬하기

  • sort() : 작은 순서대로 정렬(오름차순)
    • sort() 또는 sort(reverse=False): 오름차순
    • sort(reverse=True): 내림차순
>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]

🔎 리스트의 모든 요소 삭제

  • clear() 또는 del a[:]
# clear
>>> a = [10, 20, 30]
>>> a.clear()
>>> a
[]


# del
>>> a = [10, 20, 30]
>>> del a[:]
>>> a
[]

🔎 리스트를 슬라이스로 조작

>>> a = [10, 20, 30]
>>> a[len(a):] = [500]
>>> a
[10, 20, 30, 500]


22.2 리스트의 할당과 복사 알아보기


🔎 리스트(튜플)와 반복문

for 변수 in 리스트:    # 반복하면서 요소를 꺼내옴
    반복할 코드
 
for 인덱스, 요소 in enumerate(리스트):    # 반복하면서 인덱스와 요소를 꺼내옴
    반복할 코드
 
for 인덱스 in range(len(리스트)):    # 리스트의 길이로 반복
    리스트[인덱스]                   # 인덱스로 요소에 접근
 
while 인덱스 < len(리스트):    # 리스트의 길이로 반복
    리스트[인덱스]             # 인덱스로 요소에 접근
    인덱스 += 1

🔎 가장 작은 수와 가장 큰 수 구하기

  • smallest, largest
>>> a = [38, 21, 53, 62, 19]
>>> smallest = a[0]
>>> for i in a:
...     if i < smallest:
...         smallest = i
...
>>> smallest
19



>>> a = [38, 21, 53, 62, 19]
>>> largest = a[0]
>>> for i in a:
...     if i > largest:
...         largest = i
...
>>> largest
62


22.3 반복문으로 리스트의 요소를 모두 출력하기


🔎 리스트(튜플) 표현식

  • 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트(튜플)를 생성


22.4 리스트의 가장 작은 수, 가장 큰 수, 합계 구하기


🔎 min, max, sum 함수

  • min : 리스트(튜플)에서 가장 작은 값
  • max : 가장 큰 값
  • sum : 요소의 합계


22.5 리스트 표현식 사용하기


  • for 조건문
>>> a = [i for i in range(10)]        # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))    # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • if 조건문
>>> a = [i for i in range(10) if i % 2 == 0]    # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]


22.6 리스트에 map 사용하기


🔎 리스트(튜플)에 map 함수 사용

  • 리스트(튜플)의 요소를 지정된 함수로 처리해주는 함수
리스트 = list(map(함수, 리스트))
a = list(map(int, a))
튜플 = tuple(map(함수, 튜플))
 
변수1, 변수2 = list(map(함수, 리스트))    # 언패킹 사용
a, b = list(map(str, range(2)))
 
변수1, 변수2 = map(함수, 리스트)          # 언패킹 사용
a, b = map(int, input().split())


🔎 input().split()과 map

>>> a = map(int, input().split())
10 20 (입력)
>>> a
<map object at 0x03DFB0D0>
>>> list(a)
[10, 20]


22.7 튜플 응용하기


🔎 튜플 표현식 사용

>>> a = tuple(i for i in range(10) if i % 2 == 0)
>>> a
(0, 2, 4, 6, 8)
  • ( )(괄호) 안에 표현식을 넣으면 튜플이 아니라 제너레이터 표현식
>>> (i for i in range(10) if i % 2 == 0)
<generator object <genexpr> at 0x050FE420>

🔎 tuple에 map 사용

>>> a = (1.2, 2.5, 3.7, 4.6)
>>> a = tuple(map(int, a))
>>> a
(1, 2, 3, 4)


22.8 퀴즈








22.9 연습문제: 리스트에서 특정 요소만 뽑아내기

[i for i in a if len(i) == 5]


22.10 심사문제: 2의 거듭제곱 리스트 생성하기

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글