python?

  • 1990년도 귀도 반 로섬이 …(개발과 관련 없음)

왜 파이썬인가?


올바른 프로그래머의 자세

질문하는 법

  • 나쁜 질문 ⇒ 좋은 질문
    • 안된다! ⇒ 몇번째 줄에 오류가 발생했다!
    • 봐달라! ⇒ 실행결과와 요청사항이 맞는가?
    • 모르겠다! ⇒ 방금 내용을 ~~ 이해했는데 맞는가?
  • 내가 어디를 어떻게 이해하고 있는지 전달하는게 중요!
  • 관련 blog 추천

개발하는 법

  • 나쁜 개발 ⇒ 좋은 개발
    • 웹크롤링 프로그램을 만들자 ⇒ 상세 목표를 정하자!
    • 프로젝트 요청 바로 수락 ⇒ 요구 사항을 파악하자!
    • 기존 프로그램을 대체해보자 ⇒ 기존 프로그램을 최대한 활용하자!
  • 개발하는 이유, 목적, 과정을 알고 있어야 하며, 기존 프로그램을 충분히 이용하는 것이 이상적
  • 관련 blog 추천
    • blog 내용 요약

      • 기본 문법 ⇒ 프레임워크 ⇒ 포트폴리오 ⇒ CS 기초 지식 ⇒ 타인 패턴 배우기 ⇒ 프로젝트 ⇒ 더 깊게!
      • 다양한 방법론 알기(적재적소의 툴 사용)
      • 도움 요청하기(질문하는 법으로)
      • 비즈니스 가치 생각하기(기존 프로그램으로 충분히)
      • 고급
        • 알고리즘 연습
        • 기술 서적 읽기
        • 타인 패턴 배우기
        • 프로그래밍 언어 공부
        • 개발 원칙 준수
        • KISS(Keep It Simple Stupid)
          • 디자인에서 간단하고 알기 쉽게 만드는 편이 좋다는 원리
        • SOLID(재사용, 확장, 유지 관리, 효율적인 프로그램을 구축하기 위해)
          • Single responsibility principle(단일 책임 원칙)
          • Open-Closed principle(개방-폐쇄 원칙)
          • Liskov Substitution principle(리스코프 치환 원칙)
          • Interface segregation principle(인터페이스 분리 법칙)
          • Dependency inversion principle(의존 역전 원칙)
          • 추천 유튜브1, 유튜브2
        • DRY(Don’t Repeat Yourself)
          • 개인 유틸리티 파일 활용
        • 개인 프로젝트
        • 가르쳐보기

      처음 개발 시작하는 이들을 위한 6단계 로드맵

      10배 이상 뛰어난 개발자가 되는 법 | 요즘IT

      프로그래밍 잘하는 5가지 방법

틀린 코드는 없다!(더러운 코드는 있다..)


의사코드와 순서도

# 계산기 프로그램 중에서 지수 기능 구현해보기

# 1. 값을 입력받는다.
# 2. 두 번째 값을 입력받는다.
# 3. 첫 번째 값의 두 번째 값 제곱수를 구한 뒤 해당 값을 변수에 저장한다.
# 4. 해당 값을 출력한다.
# 계산기 프로그램 중에서 지수 기능 구현해보기

# 1. 값을 입력받는다.
x = int(input())
# 2. 두 번째 값을 입력받는다.
y = int(input())
# 3. 첫 번째 값의 두 번째 값 제곱수를 구한 뒤 해당 값을 변수에 저장한다.
z = pow(x, y)
# 4. 해당 값을 출력한다.
print(z)

의사코드(슈도코드, pseudocode)?

  • 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어
  • 알고리즘 표현 언어
  • 문법 X

써보자!

사칙연산 + 제곱, 몫, 나머지

# 더한다
# 뺀다
# 곱한다
# 나눈다
# 나눈 몫을 구한다
# 나눈 나머지를 구한다
# 거듭제곱을 한다

조건

# x 이거나 y 이다
# x 이고 y 이다
# x가 아니다
# y가 x보다 크다
# y가 x보다 크거나 같다
# y가 x보다 작다
# y가 x보다 작거나 같다
# y와 x는 같다
# y와 x는 같지 않다
# y는 x 이다
# y는 x가 아니다

# 만약 x < y 이면, A를 하고
# 아니면, 만약 x > y 이면, B를 하고
# 둘다 아니면, C를 해라

반복

# 계속 반복한다
# 0 부터 4 구간을 반복한다
# 반복하다가 특정 경우에는 반복에 처음으로 돌아간다
# 반복하다가 특정 경우에는 반복을 멈춘다

자료형

# 정수를 처리한다
# 실수를 처리한다
# 정보들을 처리한다
# 정보들이 변하면 안된다
# 범위를 한번에 처리한다
# 글자를 처리한다
# 집합을 처리한다
# 키와 값으로 처리한다
# 참과 거짓을 처리한다

변수

# 변수에 담아 처리한다

순차적 진행

# 순차적으로 처리한다

컴퓨터가 코드를 처리하는 법

직관, 논리, 추론, 판단, 공간 판단 X

  • 프로그램이 판단하는 결과는 100% 믿으면 안된다!

순서도



과제

계산기 프로그램을 의사코드와 순서도 짜보기

# 계산기 프로그램

# 각 계산식을 함수로 묶는다
# 연산 기호를 문자열로 묶는다
# 강제 종료를 셀 수 있게 변수를 설정한다.
# 무한 반복한다.
	# 계산 방법을 입력한다.
	# 연산 기호에 포함되어 있지 않으면
		# 경고를 주고
		# 안내한다.
	# 경고가 3회 넘으면
		# 안내하고
		# 종료한다.
	# 연산 기호에 포함되어 있으면
		# 경고를 초기화하고
		# 끝내기를 선택하면
			# 끝낸다.
		# 연산 기호를 통해 함수를 알아내고
		# 숫자를 입력 받고
		# 계산 결과를 출력한다.
def enter_nums():
  while True:
    # 숫자를 띄어쓰기로 입력 받는다
    data = input('숫자를 띄어쓰기로 입력[ex:1 2] :')
    # 띄어쓰기 기준으로 잘라낸다
    data = data.split()
    try:
    # 각 요소를 int로 형변환 한다
      data = map(int, data)
    # 각 요소를 list에 저장한다
      nums = list(data)
      # 입력값이 2개 이하면
      if len(nums) < 2:
        # 넘어갈 때 까지 반복한다
        print('적어도 2개를 입력해야 합니다')
        continue
    # 최초 2 입력만 사용한다
      return nums[:2]
    except Exception as error:
      print('에러 발생', error)

# 계산기 프로그램

# 각 계산식을 함수로 묶는다
calc_func = [
    lambda x, y: x + y, 
    lambda x, y: x - y, 
    lambda x, y: x * y, 
    lambda x, y: x / y, 
    lambda x, y: x ** y,
    ]
# 연산 기호를 문자열로 묶는다
calc_type = '+-*/^x'

# 강제 종료를 셀 수 있게 변수를 설정한다.
warning_cnt = 0

print('계산기 작동 시작')

# 무한 반복한다.
while True:
  # 계산 방법을 입력한다.
  select_calc = input('계산 선택 또는 끝내기[+, -, *, /, ^, x]:')

  # 연산 기호에 포함되어 있지 않으면
  if select_calc not in calc_type:
    # 경고를 주고
    warning_cnt += 1
    # 안내한다.
    print(f'[+, -, *, /, ^, x] 중 하나를 선택하세요. 3/{warning_cnt}')
  
  # 경고가 3회 넘으면
  if 3 <= warning_cnt:
    # 안내하고
    print('3번 이상 틀리셨습니다!')
    # 종료한다.
    break

  # 연산 기호에 포함되어 있으면
  if select_calc in calc_type:
    # 경고를 초기화하고
    warning_cnt = 0

    # 끝내기를 선택하면
    if select_calc == 'x':
      # 끝낸다.
      break

    # 연산 기호를 통해 함수를 알아내고
    calc_num = calc_type.index(select_calc)
    # 숫자를 입력 받고
    x, y = enter_nums()
    # 계산 결과를 출력한다.
    print(x, select_calc, y, '=', calc_func[calc_num](x, y))
    print()

print('계산기를 종료됩니다.')


회고

  • 파이썬이라는 언어 자체를 배우는 것이 중요하지만, 개발자로서 질문하고 개발하는 법이 더욱 중요하다는 사실을 생각하게 되었다.
  • 의사코드와 순서도를 통해, 개발 방법에 대해 생각이 나지 않는다면, 천천히 글로 써보는 것도 방법이라고 생각한다.
  • 과제를 통해, 의사코드와 순서도를 확실하게 이해했으나, 앞으로 다양한 프로젝트를 다음과 같이 진행한다면, 많은 시간이 소요될 것 같다.

Ref

profile
DA DE DS

0개의 댓글