티스토리 뷰




Do it! 자료구조와 함께 배우는 알고리즘 입문 파이썬편




  • 알고리즘 : 어떠한 문제를 해결하기 위해 정해 놓은 일련의 절차
    올바른 알고리즘이란? 어떠한 경우에도 실행결과가 똑같이 나오는 것

 

# 세 정수를 입력받아 최댓값 구하기

print('세 정수의 최댓값을 구합니다.')
a=int(input('정수 a의 값을 입력하세요: ')
b=int(input('정수 b의 값을 입력하세요: ')
c=int(input('정수 c의 값을 입력하세요: ')

maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c

print(f'최댓값은 {maximum}입니다.')
  • 한 문장씩 순서대로 처리되는 구조? 순차 구조 sequential structure
    if와 콜론(:) 사이에 있는 식? 조건식
  • 조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 바뀌는 것? 선택 구조 select structure

 

  • input() 함수는 문자열을 반환하므로 문자열을 10진수 정수형으로 변환하기 위해 int() 함수를 사용
    문자열형을 정수형으로 변환하는 과정을? 형 변환 type conversion

 

>>> int('17')
17
>>> int('0b110',2)
6
>>> int('0o75',8)
13
>>> int('ox3F',16)
63
float('3.14') #문자열을 실수형으로 변환
3.14
  • int()? 10진수 정수형으로 변환하는 함수

 

  • 복합문 : if문이나 while문 등 복합문의 첫 부분은 if나 while과 같은 키워드로 시작하여 콜론(:)으로 끝남.
    이 부분을 헤더 header 라고 한다. 스위트 suite 는 헤더와 한 세트로 따라다니는 실행문을 의미한다.
    헤더의 마지막 콜론(:)은 '바로 뒤에 스위트가 이어집니다'를 의미한다.

    if 식: 스위트
    elif 식: 스위트
    else 식: 스위트

 

# 세 정숫값을 입력받아 중앙값을 구하기 2

def med3(a, b, c):
    """a, b, c의 중앙값을 구하여 반환(다른 방법)"""
    if (b >= a and c <= a) or (b <= a and c >= a):
        return a
    elif (a > b and c < b) or (a < b and c > b):
        return b
    return c

print('세 정수의 중앙값을 구합니다.')
a = int(input('정수 a의 값을 입력하세요.: '))
b = int(input('정수 b의 값을 입력하세요.: '))
c = int(input('정수 c의 값을 입력하세요.: '))

print(f'중앙값은 {med3(a, b, c)}입니다.')
  • 위 프로그램은 코드는 짧지만 프로그램의 효율은 좋지 않다.
    왜? if 조건식에서 a와 b의 대소를 판단하고 elif 조건식에서 a와 b를 다시 비교하는 것이 효율적이지 않다.

 

  • pass 문은 '아무것도 수행하지 말고 그냥 지나치세요' 를 뜻하는 키워드이다.

 

  • 연산자와 피연산자
    +,- 등의 기호를 산술연산자 operator
    연산대상을 피연산자 operand
    a > b 에서 연산자는 >이고, 피연산자는 a와 b
    연산자는 피연산자의 개수에 따라 3가지로 분류됨
    단항연산자 : 피연산자 1개 -a
    이항연산자 : 피연산자 2개 a<b
    삼항연산자 : 피연산자 3개 a if b else c
    이 중에서 조건연산자 conditional operator인 if~else문은 파이썬의 유일한 삼항연산자

 

반응형
댓글