본문 바로가기
컴퓨터

[파이썬01]입출력과 조건문과 함수와...

by Oh 선생 2019. 12. 27.

방과후 교재로 사용하려던 건데... 방과후가 개강이 안되서--; 일단 포스팅으로 올려둡니다. 동아리 할 때나 써야지...


1: , 출력과 조건문, 함수

0. Introduction

제 경험상 코딩은 직접 뭔가를 만들어보고 바꿔보고 뚝딱거려봐야 빨리 늡니다. 그래서 이 교재는 직접 프로그램을 손으로 쳐서 실행해본 뒤, 그 결과를 확인하고 설명하는 방식으로 구성하였습니다. 이 코드가 뭘 의미하는 걸까 의문이 들더라도, 일단은 그대로 따라 작성하세요. 코딩을 복기하는 과정에서 의문이 해결될 겁니다.

1. 섭씨와 화씨 단위 변환기

이미 여러 번 경험해보았을 섭씨와 화씨 변환입니다. 두 단위 사이의 변환 공식은 다음과 같습니다.

이제, 값을 입력하면 다른 단위로 바꾸어주는 프로그램을 작성해봅시다. 파이썬을 실행시킨 후, File New File을 실행시키면 새로운 창이 하나 뜹니다. 거기에 아래와 같은 코드를 입력하세요. 이때 들여쓰기를 반드시 지키도록 하세요. 파이썬의 들여쓰기 표준은 스페이스 4칸입니다.

select=int(input('어떻게 단위를 바꿀까요? 1.섭씨->화씨 2. 화씨->섭씨 :'))
a=float(input('바꿀 값을 입력하세요:'))

if select==1:
    b=(a*1.8)+32
    print('섭씨 온도 {0}C을 화씨온도로 바꾸면 {1}F입니다.'.format(a,b))

if select==2:
    b=(a-32)/1.8
    print('화씨 온도 {0}F을 섭씨온도로 바꾸면 {1}C입니다.'.format(a,b))

코드를 다 작성하고 나면, [F5]키를 눌러 실행할 수 있습니다. , 컴파일 형태로 작성된 프로그램은 반드시 저장되어야만 실행할 수 있습니다. 적당한 폴더에 저장한 뒤, 결과를 지켜봅시다.

어떻게 단위를 바꿀지 물어볼 때에는 1 또는 2를 입력하고, 거기에 맞게 온도를 입력하면 다른 단위의 온도가 출력됩니다.

이제 위 코드를 하나씩 뜯어봅시다.

select=int(input('어떻게 단위를 바꿀까요? 1.섭씨->화씨 2. 화씨->섭씨 :'))
a=float(input('바꿀 값을 입력하세요:'))


int()
문은 괄호 안의 자료를 정수형으로 바꾸어줍니다. input문은 기본적으로 입력된 결과를 문자string’로 인식합니다. 그래서 문자로 인식된 1, 2를 정수로 바꿔주기 위해 int 구문을 사용했습니다(하지만 이 프로그램에선 생략해도 됩니다).우선 input()문을 먼저 봅시다. input()문은 사용자로부터 어떠한 값을 입력받고 싶을 때 사용하는 구문입니다. input(‘입력 시 화면에 표시할 문자’)의 형태로 사용합니다. 이때 입력된 값은 어디에 저장을 해야만 사용할 수 있습니다. 이러한 저장 작업을 할당이라고 합니다. 여기에선 select라는 변수에 input문의 결과를 할당했습니다.

그러면 두 번째 줄도 이해가 가지요? 바꿀 값을 입력받아서 a라는 변수에 할당한 겁니다. 이때 float는 위의 int와 비슷한 역할을 합니다. float는 자료형을 실수형(소숫점이 표현되는 형태)으로 바꾸라는 명령어입니다. 이 프로그램에서 이때의 float는 생략하면 안 됩니다(왜일까요?). 

if select==1:
    b=(a*1.8)+32
    print('섭씨 온도 {0}C을 화씨온도로 바꾸면 {1}F입니다.'.format(a,b))


두 번째 줄은
a1.8을 곱하고, 32를 더해 b라는 문자에 할당하라는 말입니다. 파이썬에서 사용하는 수학 연산자는 +,-,*,/,**,% 등이 있습니다. /는 나눈 몫을, **는 제곱을, %는 나눈 나머지를 의미합니다.if 문은 특정한 조건에 따라 다른 결과를 만들고 싶을 때 사용하는 구문입니다. if (조건): 의 형태로 사용합니다. 여기에선 select라는 변수가 1과 같을 때 : 이후의 문장을 실행하도록 작성되었습니다. 파이썬에서 같다의 의미로 사용하는 기호는 ==입니다. =는 할당의 의미로 사용됩니다.

마지막의 print()문은 괄호 안의 내용을 화면에 인쇄하라는 구문입니다. print(a)라고 하면 a의 내용이 인쇄됩니다. 평범한 print문은 print(‘Hello World’)와 같이 작성하게 됩니다. 그런데 중간중간에 {0}, {1} 같은 괄호들이 들어가 있지요? 이는 print문의 format 메소드를 사용하는 부분입니다. {0}, {1}에는 뒤의 .format() 안에 들어간 문자의 내용이 순서대로 들어가게 됩니다. , {0} 부분에는 a에 할당된 수가, {1} 부분에는 b에 할당된 수가 인쇄됩니다.

if select==2:
    b=(a-32)/1.8
    print('화씨 온도 {0}F을 섭씨온도로 바꾸면 {1}C입니다.'.format(a,b))


이것저것 수를 대입해가면서 코드가 제대로 작동하는지 확인해봅시다
.위와 거의 같은 내용의 코드입니다. 이번엔 select 변수가 2일 때 코드의 내용을 실행하라는 명령어입니다.

 

연습문제

앞서 섭씨-화씨 단위변환기를 작성해보았습니다. 이 코드를 응용하여 이와 다른 코드변환기를 만들어보세요. 그리고 더 넣고 싶은 기능이 뭐가 있는지 생각해보세요.

 

2. 섭씨와 화씨 변환기(2): 함수 사용

코드를 작성하다보면, 반복적으로 같은 처리를 해줘야 할 때가 있습니다. 예를 들어 특정한 수의 약수를 찾는 경우 같은 게 그렇죠. 그리고 어떤 프로그램을 만들다보면, 예전에 만들었던 부분을 그대로 가져오면 참 좋겠다 싶을 때도 있습니다. 만약 그 부분이 프로그램에서 독립적인 부분으로 구성되어 있다면, 퍼오는 게 간단해지겠죠. 이럴 때 우리는 함수를 사용합니다. 일단 치고 시작합시다.

def print_menu():
    print('1. 섭씨를 화씨로')
    print('2. 화씨를 섭씨로')

def ctof():
    c=float(input('바꿀 섭씨 값을 입력하세요:'))
    f=(c*1.8)+32
    print('섭씨 온도 {0}C을 화씨온도로 바꾸면 {1}F입니다.'.format(c,f))

def ftoc():
    f=float(input('바꿀 화씨 값을 입력하세요:'))
    c=(f-32)/1.8
    print('화씨 온도 {0}F을 섭씨온도로 바꾸면 {1}C입니다.'.format(f,c))

print_menu()
select=int(input('어떻게 단위를 바꿀까요? 1또는 2를 입력하세요 :'))

if select==1:
    ctof()

if select==2:
    ftoc()

우선 메뉴를 띄워준 뒤, 위와 같은 작업을 해주는 프로그램입니다. 우선 프로그램의 전체 구조를 보면, def로 시작하는 구문이 반복됩니다. 이 부분이 사용할 함수를 만드는 부분입니다. 여기가 해결되고 나면, 실제 프로그램에 해당하는 부분은 print_menu()부터의 6줄 뿐입니다. 간단하죠? 이제 하나씩 코드를 뜯어봅시다.

def print_menu():
    print('1. 섭씨를 화씨로')
    print('2. 화씨를 섭씨로')

함수는 def 함수명(): 과 같은 방식으로 만듭니다. : 이후에는 실행할 명령을 입력합니다. 이 경우 두 줄의 print 명령을 실행하는 겁니다.

def ctof():
    c=float(input('바꿀 섭씨 값을 입력하세요:'))
    f=(c*1.8)+32
    print('섭씨 온도 {0}C을 화씨온도로 바꾸면 {1}F입니다.'.format(c,f))

def ftoc():
    f=float(input('바꿀 화씨 값을 입력하세요:'))  
    c=(f-32)/1.8
    print('화씨 온도 {0}F을 섭씨온도로 바꾸면 {1}C입니다.'.format(f,c))

여기에선 ctof 함수와 ftoc 함수를 선언하고 있습니다. ctof 함수를 먼저 보겠습니다. c라는 변수에 바꿀 섭씨값을 실수로 바꾸어 입력하고, f라는 값에 (c*1.8)+32를 할당합니다. 그리고 print 명령을 실행하지요. ftoc함수는 해석할 수 있겠지요?

print_menu()
select=int(input('어떻게 단위를 바꿀까요? 1또는 2를 입력하세요 :'))
if select==1:
    ctof()
if select==2: 
    ftoc()


우선
print_menu() 함수를 실행시켜 두 줄의 메뉴를 띄웁니다. 그리고 select 변수에 1이나 2를 할당하지요. 그리고 select의 값이 1이면 ctof 함수를, 2이면 ftoc 함수를 실행시킵니다.

연습문제

함수를 사용하여, 보다 다양한 단위 변환이 가능한 단위변환 프로그램을 만들어보세요.

요샌 이 아가씨가 눈에 들어오더만...

댓글0