2011년 11월 28일 월요일

50분 후에 10분 쉬는 알람 프로그램

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import pygame, sys, time
for i in range(50, 0, -1) :
    print(i)
    time.sleep(60)
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode([1024, 768], pygame.FULLSCREEN)

pygame.time.delay(1000)
ok = pygame.mixer.Sound('ok.wav')
ok.play(2)

pygame.time.delay(1000)
pygame.mixer.music.load('music.mp3')
pygame.mixer.music.play(-1)

for i in range(24, 0, -1) :
    ipic = pygame.image.load('v01.jpg')
    screen.blit(ipic, [0, 0])
    pygame.display.flip()
    pygame.time.delay(5000)
    ipic = pygame.image.load('v02.jpg')
    screen.blit(ipic, [0, 0])
    pygame.display.flip()
    pygame.time.delay(5000)
    ipic = pygame.image.load('v03.jpg')
    screen.blit(ipic, [0, 0])
    pygame.display.flip()
    pygame.time.delay(5000)
    ipic = pygame.image.load('v04.jpg')
    screen.blit(ipic, [0, 0])
    pygame.display.flip()
    pygame.time.delay(5000)
    ipic = pygame.image.load('v05.jpg')
    screen.blit(ipic, [0, 0])
    pygame.display.flip()
    pygame.time.delay(5000)       
    for event in pygame.event.get():
               if event.type == pygame.QUIT:
                   sys.exit()
               elif event.type == pygame.KEYDOWN:
                   if event.key == pygame.K_ESCAPE:
                       sys.exit()
    if i == 1 :
        sys.exit()

# 프로그램 설명
5초 후 10분 쉬는 프로그램으로 만들려면 다음과 같이 해 줍니다.
for i in range(5, 0, -1) :
    print(i)
    time.sleep(1)
for i in range(5, 0, -1)는 5부터 거꾸로 4, 3, 2, 1까지 반복하여 실행합니다. time.sleep(1)는 1초 동안 쉽니다. 따라서 처음에 숫자 5를 보여주고, 1초 후 숫자 4를, 다시 1초 후 숫자 3을 보여줍니다. 카운트다운하는 것입니다. 원래 프로그램대로 하면 처음에 50을 보여준 후, 1분 후에 49를 보여주고, 다시 1분 후에 48을 보여주어 50분 후에 아래 프로그램이 실행되도록 합니다.

screen = pygame.display.set_mode([1024, 768], pygame.FULLSCREEN)은 그림을 전체 화면으로 하고 그림 크기를  너비 1024 픽셀, 높이 768 픽셀로 합니다.

pygame.time.delay(1000)은 1초 동안 시간을 주어, 음악 파일을 띄울 시간을 확보합니다.

pygame.mixer.music.play(-1)은 mp3 음악 파일을 계속 반복하여 연주하도록 합니다. .play(2)는 3번 반복합니다.

for i in range(24, 0, -1)은 약 10분 동안 5개의 그림을 5초 정도 번갈아 보여줍니다. 

ipic = pygame.image.load('v01.jpg')은 그림 파일 v01.jpg를 불러옵니다.
screen.blit(ipic, [0, 0])은 위 그림 파일을 너비 1024 픽셀, 높이 768 픽셀 크기로 전체 화면에 보여주도록 합니다. [0, 0]은 좌측 최상단 위치를 지정한 것입니다.
pygame.display.flip()은 다음 그림 파일로 화면을 넘겨주도록 하는 명령입니다.
pygame.time.delay(5000)은 5초 동안 쉬도록 합니다.

for event in pygame.event.get()는 마우스나 키보드를 사용했을 경우 반응하도록 합니다.

if event.type == pygame.QUIT:
                   sys.exit()은 마우스로 닫기 단추를 클릭했을 경우 프로그램이 종료되도록 합니다.

elif event.type == pygame.KEYDOWN:
                   if event.key == pygame.K_ESCAPE:
                       sys.exit()은 키보드에서 Esc 키를 누르면 마지막 그림 파일 v05.jpg까지 보여주고 프로그램을 종료하도록 합니다.

2011년 11월 16일 수요일

17 곱셈 표 프로그램


print('### 곱셈 표 프로그램 ###')
print('숫자를 입력하면 19단까지 표를 만들어줍니다.')
print('종료하려면 영어 x를 입력해 주시기 바랍니다.')
def iMultiTable(haunted) :
    try :
        gnawings = int(haunted)
    except ValueError :
        print('숫자를 입력해 주세요~')
    else :
        for multi in range(1,20) :
            print(gnawings, 'x', multi, '=', multi * gnawings)
slumber = 'a'
while slumber != 'x' :
    slumber = input('\n' + '숫자를 입력해 주세요(종료는 영어 x) : ')
    if slumber == 'x' :
        print('프로그램을 종료합니다.')
    else :
        iMultiTable(slumber)
print('이용해 주셔서 감사합니다~')

for 키워드를 이용하여 1부터 19까지 19번 반복(이터레이션)하여 실행하도록 하였습니다. range() 함수는 두 숫자 사이를 모두 리스트로 만들어줍니다. range(5)라고 하면 리스트 [0, 1, 2, 3, 4]를 생성해줍니다. range(1, 20, 2)은 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]를 만들어줍니다. 1부터 19까지 2씩 증가시킨 것입니다.
변수명을 정하기 어려워 영어 공부도 할 겸, 외우고 있는 영어 단어를 사용하였습니다.
결과물은 다음과 같습니다.


>>>
### 곱셈 표 프로그램 ###
숫자를 입력하면 19단까지 표를 만들어줍니다.
종료하려면 영어 x를 입력해 주시기 바랍니다.

숫자를 입력해 주세요(종료는 영어 x) : 19
19 x 1 = 19
19 x 2 = 38
19 x 3 = 57
19 x 4 = 76
19 x 5 = 95
19 x 6 = 114
19 x 7 = 133
19 x 8 = 152
19 x 9 = 171
19 x 10 = 190
19 x 11 = 209
19 x 12 = 228
19 x 13 = 247
19 x 14 = 266
19 x 15 = 285
19 x 16 = 304
19 x 17 = 323
19 x 18 = 342
19 x 19 = 361

숫자를 입력해 주세요(종료는 영어 x) : 1919
1919 x 1 = 1919
1919 x 2 = 3838
1919 x 3 = 5757
1919 x 4 = 7676
1919 x 5 = 9595
1919 x 6 = 11514
1919 x 7 = 13433
1919 x 8 = 15352
1919 x 9 = 17271
1919 x 10 = 19190
1919 x 11 = 21109
1919 x 12 = 23028
1919 x 13 = 24947
1919 x 14 = 26866
1919 x 15 = 28785
1919 x 16 = 30704
1919 x 17 = 32623
1919 x 18 = 34542
1919 x 19 = 36461

숫자를 입력해 주세요(종료는 영어 x) : a
숫자를 입력해 주세요~

숫자를 입력해 주세요(종료는 영어 x) : x
프로그램을 종료합니다.
이용해 주셔서 감사합니다~
>>>

2011년 11월 11일 금요일

16 도량형 변환 프로그램

print('주요 도량형 변환 프로그램')
def myMenu() :
    print('다음 메뉴 중 해당하는 번호를 입력해 주세요.' + '\n')
    print('1. 센티미터를 인치로  2. 피트를 센티미터로  3. 마일을 킬로미터로')
    print('4. 평방미터를 평으로  5. 야드를 미터로  6. 리를 킬로미터로')
    print('7. 자를 센티미터로  8. 치를 센티미터로  9. 에이커를 평방미터로')
    print('10. 온스를 그램으로  11. 파운드를 킬로그램으로  12. 갤런을 리터로')
    print('13. 캐럿을 밀리그램으로  14. 배럴을 리터로  15. 홉을 밀리리터로')
    print('16. 되를 리터로  17. 말을 리터로  18. 섬을 리터로')
    print('19. 돈을 그램으로  20. 냥을 그램으로  21. 근을 그램으로')
    print('22. 관을 킬로그램으로  23. 화씨를 섭씨로')
    print('33. 메뉴 다시 보기    x. 프로그램 종료') 
def myMulti(vindication, smite, impetuosity) :
    try :
        efface = float(input(vindication))
    except ValueError :
        print('숫자를 입력해 주세요~')
    else :
        efface = round(efface * smite, 1)
        print(efface, impetuosity)
def myDiv(vindication, smite, impetuosity) :
    try :
        efface = float(input(vindication))
    except ValueError :
        print('숫자를 입력해 주세요~')
    else :
        efface = round(efface / smite, 1)
        print(efface, impetuosity)
def myFc(vindication, smite, impetuosity) :
    try :
        efface = float(input(vindication))
    except ValueError :
        print('숫자를 입력해 주세요~')
    else :
        efface = round((efface - smite) * 5/9, 1)
        print('섭씨', efface, impetuosity)
myMenu()
aMeasure = 'a'
while aMeasure != 'x' :
    aMeasure = input('\n' + '위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : ')
    if aMeasure == 'x' :
        print('프로그램을 종료합니다.')
    else :
        if aMeasure == '1' :
            myDiv('센티미터 : ', 2.54, '인치')
        elif aMeasure == '2' :
            myMulti('피트(ft) : ', 30.48, '센티미터')
        elif aMeasure == '3' :
            myMulti('마일(mil) : ', 1.6093, '킬로미터')
        elif aMeasure == '4' :
            myMulti('평방미터(m x m) : ', 0.3025, '평')
        elif aMeasure == '5' :
            myMulti('야드(yd) : ', 0.9144, '미터')
        elif aMeasure == '6' :
            myMulti('리(관례적 환산법으로) : ', 0.393, '킬로미터')
        elif aMeasure == '7' :
            myMulti('자 : ', 30.3, '센티미터')
        elif aMeasure == '8' :
            myMulti('치 : ', 3.03, '센티미터')
        elif aMeasure == '9' :
            myMulti('에이커(acre) : ', 4046.8564224, '평방미터')
        elif aMeasure == '10' :
            myMulti('온스(oz) : ', 28.35, '그램')
        elif aMeasure == '11' :
            myMulti('파운드(lb) : ', 0.453592, '킬로그램')
        elif aMeasure == '12' :
            myMulti('갤런(gal, 미국식) : ', 3.785, '리터')
        elif aMeasure == '13' :
            myMulti('캐럿(K) : ', 205, '밀리그램')
        elif aMeasure == '14' :
            myMulti('배럴 : ', 159, '리터')
        elif aMeasure == '15' :
            myMulti('홉 : ', 180, '밀리리터')
        elif aMeasure == '16' :
            myMulti('되 : ', 1.8, '리터')
        elif aMeasure == '17' :
            myMulti('말 : ', 18, '리터')
        elif aMeasure == '18' :
            myMulti('섬 : ', 180, '리터')
        elif aMeasure == '19' :
            myMulti('돈 : ', 3.75, '그램')
        elif aMeasure == '20' :
            myMulti('냥 : ', 37.5, '그램')
        elif aMeasure == '21' :
            myMulti('근 : ', 600, '그램')
        elif aMeasure == '22' :
            myMulti('관 : ', 3.75, '킬로그램')
        elif aMeasure == '23' :
            myFc('화씨 : ', 32, '도')
        elif aMeasure == '33' :
            myMenu()
        else :
            print('프로그램을 종료하려면 x를 입력해 주세요~')
print('이용해 주셔서 감사합니다.')



>>>
주요 도량형 변환 프로그램
다음 메뉴 중 해당하는 번호를 입력해 주세요.

1. 센티미터를 인치로  2. 피트를 센티미터로  3. 마일을 킬로미터로
4. 평방미터를 평으로  5. 야드를 미터로  6. 리를 킬로미터로
7. 자를 센티미터로  8. 치를 센티미터로  9. 에이커를 평방미터로
10. 온스를 그램으로  11. 파운드를 킬로그램으로  12. 갤런을 리터로
13. 캐럿을 밀리그램으로  14. 배럴을 리터로  15. 홉을 밀리리터로
16. 되를 리터로  17. 말을 리터로  18. 섬을 리터로
19. 돈을 그램으로  20. 냥을 그램으로  21. 근을 그램으로
22. 관을 킬로그램으로  23. 화씨를 섭씨로
33. 메뉴 다시 보기    x. 프로그램 종료

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 23
화씨 : 911
섭씨 488.3 도

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 5
야드(yd) : 250
228.6 미터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 9
에이커(acre) : 10
40468.6 평방미터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 33
다음 메뉴 중 해당하는 번호를 입력해 주세요.

1. 센티미터를 인치로  2. 피트를 센티미터로  3. 마일을 킬로미터로
4. 평방미터를 평으로  5. 야드를 미터로  6. 리를 킬로미터로
7. 자를 센티미터로  8. 치를 센티미터로  9. 에이커를 평방미터로
10. 온스를 그램으로  11. 파운드를 킬로그램으로  12. 갤런을 리터로
13. 캐럿을 밀리그램으로  14. 배럴을 리터로  15. 홉을 밀리리터로
16. 되를 리터로  17. 말을 리터로  18. 섬을 리터로
19. 돈을 그램으로  20. 냥을 그램으로  21. 근을 그램으로
22. 관을 킬로그램으로  23. 화씨를 섭씨로
33. 메뉴 다시 보기    x. 프로그램 종료

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 4
평방미터(m x m) : 40000
12100.0 평

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 8
치 : 3
9.1 센티미터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 12
갤런(gal, 미국식) : 5
18.9 리터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 1
센티미터 : 88
34.6 인치

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 14
배럴 : 3
477.0 리터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 33
다음 메뉴 중 해당하는 번호를 입력해 주세요.

1. 센티미터를 인치로  2. 피트를 센티미터로  3. 마일을 킬로미터로
4. 평방미터를 평으로  5. 야드를 미터로  6. 리를 킬로미터로
7. 자를 센티미터로  8. 치를 센티미터로  9. 에이커를 평방미터로
10. 온스를 그램으로  11. 파운드를 킬로그램으로  12. 갤런을 리터로
13. 캐럿을 밀리그램으로  14. 배럴을 리터로  15. 홉을 밀리리터로
16. 되를 리터로  17. 말을 리터로  18. 섬을 리터로
19. 돈을 그램으로  20. 냥을 그램으로  21. 근을 그램으로
22. 관을 킬로그램으로  23. 화씨를 섭씨로
33. 메뉴 다시 보기    x. 프로그램 종료

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 13
캐럿(K) : 2
410.0 밀리그램

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 17
말 : 10
180.0 리터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 16
되 : 3
5.4 리터

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 19
돈 : 0.5
1.9 그램

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 22
관 : 5
18.8 킬로그램


위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : 33
다음 메뉴 중 해당하는 번호를 입력해 주세요.

1. 센티미터를 인치로  2. 피트를 센티미터로  3. 마일을 킬로미터로
4. 평방미터를 평으로  5. 야드를 미터로  6. 리를 킬로미터로
7. 자를 센티미터로  8. 치를 센티미터로  9. 에이커를 평방미터로
10. 온스를 그램으로  11. 파운드를 킬로그램으로  12. 갤런을 리터로
13. 캐럿을 밀리그램으로  14. 배럴을 리터로  15. 홉을 밀리리터로
16. 되를 리터로  17. 말을 리터로  18. 섬을 리터로
19. 돈을 그램으로  20. 냥을 그램으로  21. 근을 그램으로
22. 관을 킬로그램으로  23. 화씨를 섭씨로
33. 메뉴 다시 보기    x. 프로그램 종료

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! :
이만 종료합니다.

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! :
이만 종료합니다.

위 메뉴 중 변환하고 싶은 도량형 메뉴 번호를 입력해 주세요! : x
프로그램을 종료합니다.

이용해 주셔서 감사합니다.
>>>




15 예외 처리법

숫자만 입력해야 하는데 숫자가 아닌 문자를 입력하면 프로그램이 비정상적으로 종료합니다(에러가 발생한 것입니다). 또 그냥 엔터를 칠 경우도 비정상적으로 프로그램이 종료합니다. 나누기 계산을 할 때 두번째 숫자가 0이면 에러가 납니다.

에러가 발생하면, 보통에러의 내용을 'Traceback이라는 문구로 시작하여 쭉 보여 줍니다. 대체로 마지막 줄에 어떤 에러인지 알려줍니다. 다음은 숫자를 입력해야 하는데, 숫자가 아닌 문자를 입력했을 때 알려주는 Traceback 문장입니다.

피트(ft) : x
Traceback (most recent call last):
  File "/home/Python/Practice/07measures.py", line 39, in <module>
    myMulti('피트(ft) : ', 30.48, '센티미터')
  File "/home/Python/Practice/07measures.py", line 15, in myMulti
    efface = float(input(vindication))
ValueError: could not convert string to float: 'x'
>>>

위의 경우, ValueError가 발생한 것입니다. 이러한 에러가 발생할 때 프로그램을 비정상적으로 종료하지 않게 하려면, try 구문을 사용해야 합니다. try 항목에 우선 실행할 명령을 입력합니다. 명령이 실행되는 과정에 에러가 발생할 것 같으면(숫자를 입력하지 않을 경우), except 항목에 해당 에러 문구(위에서는 ValueError)에 대해 예외처리를 해 줍니다. 예를 들면 안내문을 표시해 주고 프로그램을 다시 앞단계에서 실행되도록 해 줍니다. 숫자를 제대로 잘 입력한 경우는 else 항목의 명령을 실행합니다.  다음은 이에 대한 간단한 예제입니다.


print('계산 프로그램')
print('다음 메뉴 중 원하는 번호를 입력해 주세요.')
print('1. 곱하기   2. 나누기  3. 프로그램 종료')
def iMulti(a, b) :
    try :
        aa = float(input(a))
        bb = float(input(b))
    except ValueError :
        print('숫자만 입력하셔야 합니다용~')
    else :       
        c = round(aa * bb, 1)
        print('답 :', c)
def iDiv(a, b) :
    try :
        aa = float(input(a))
        bb = float(input(b))
    except ValueError :
        print('숫자만 입력하셔야 합니다용~')
    else :
        try :
            c = round(aa / bb, 1)
        except ZeroDivisionError :
            print('두번째로 입력한 숫자가 0이면 안됩니다용~')
        else :
            print('답 :', c)
g = '0'
while g != '3' :
    g = input('\n' + '메뉴 번호를 입력해 주세요 : ')
    if g == '3' :
        print('프로그램을 종료합니다.')
    else :
        if g == '1' :
            iMulti('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
        elif g == '2' :
            iDiv('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
        else :
            print('종료하고 싶으면 숫자 3을 입력해 주세요~')
print('이용해 주셔서 감사합니다.')

이 프로그램을 실행하고 다양한 테스트를 한 화면은 다음과 같습니다.

>>>
계산 프로그램
다음 메뉴 중 원하는 번호를 입력해 주세요.

1. 곱하기   2. 나누기  3. 프로그램 종료

메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : 3
제발 숫자만 입력해 주세요^^ : 0
두번째로 입력한 숫자가 0이면 안됩니다용~

메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~

메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~

메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 2
제발 숫자만 입력해 주세요^^ : 1
답 : 2.0

메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 1.1
제발 숫자만 입력해 주세요^^ : 2.3
답 : 2.5

메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~

메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~

메뉴 번호를 입력해 주세요 : x
종료하고 싶으면 숫자 3을 입력해 주세요~

메뉴 번호를 입력해 주세요 : 3
프로그램을 종료합니다.
이용해 주셔서 감사합니다.
>>>


2011년 11월 10일 목요일

14 패스워드 입력해야 할 수 있는 프로그램

password = 'propensity'
def myEnglish(english, korean) :
    input(english)
    print(korean)
print('비밀 번호를 입력해야 이 프로그램을 실행할 수 있어요~' + '\n' + '비밀 번호의 힌트는 경향의 영어입니다.')
guess = input('비밀 번호를 입력하세요 : ')
if guess == password :
    print('잘 맞추었습니다. 오늘도 영어 단어를 배워볼까요~')
    print('영어단어가 나오면 엔터 키를 치세요!')
    myEnglish('rude : ', '버릇없는')
    myEnglish('be devoid of : ', '~이 없다')
    myEnglish('break out into : ', '갑자기 외치기 시작하다')
    myEnglish('Atheist : ', '무신론자')
    myEnglish('contemn : ', '경멸하다')
else :
    print('비밀 번호가 틀립니다. 프로그램을 종료합니다.')


결과물 :

>>>
비밀 번호를 입력해야 이 프로그램을 실행할 수 있어요~
비밀 번호의 힌트는 경향의 영어입니다.
비밀 번호를 입력하세요 : propensity
잘 맞추었습니다. 오늘도 영어 단어를 배워볼까요~
영어단어가 나오면 엔터 키를 치세요!
rude :
버릇없는

be devoid of :
~이 없다

break out into :
갑자기 외치기 시작하다

Atheist :
무신론자

contemn :
경멸하다
 

>>>
비밀 번호를 입력해야 이 프로그램을 실행할 수 있어요~
비밀 번호의 힌트는 경향의 영어입니다.
비밀 번호를 입력하세요 : dk
비밀 번호가 틀립니다. 프로그램을 종료합니다.
>>>



13 자동차 유지비 계산하기

print('금액을 입력할 때 천단위 구분 쉼표를 사용하여도 좋습니다. 종료하려면 숫자 1을 입력하세요.')
def reComma(myV) :
    r = myV.replace(',','')
    r = int(r)
    return r
def inComma(iV) :
    ir = format(iV,',')
    return ir
g = 0
while g != 1 :
    g = input('휘발유값 : ')
    g = reComma(g)
    if g == 1 :
        print('프로그램을 종료합니다!')
    else :
        km = int(input('1일 주행 거리(Km) : '))
        dd = int(input('1달 주행 일자(일) : '))
        mileage = int(input('자동차 연비(Km/리터) : '))
        repair = input('연간 수리비 : ')
        repair = reComma(repair)
        insurance = input('연간 보험료 : ')
        insurance = reComma(insurance)
        run = int(input('자동차 총 운행 연수 : '))
        car = input('자동차 구입 비용 : ')
        car = reComma(car)
        a = int(km * dd) # 1달 주행 거리
        b = int((a/mileage) * g) # 1달 연료비
        c = int(b * 12) # 1년 연료비
        d = int(c * run) # 총 연료비
        e = int(repair * run) # 총 수리비
        f = int(insurance * run) # 총 보험료
        t = int(car + d + e + f) # 총 유지비
        y = int(t/run) # 연간 유지비
        m = int(y/12) # 월간 유지비
        a = inComma(a)
        b = inComma(b)
        c = inComma(c)
        d = inComma(d)
        e = inComma(e)
        f = inComma(f)
        t = inComma(t)
        y = inComma(y)
        m = inComma(m)
        print('1달 주행 거리는 ', a, 'Km 입니다.')
        print('1달 연료비는 ', b, '원 입니다.')
        print('1년 연료비는 ', c, '원 입니다.')
        print('총 연료비는 ', d, '원 입니다.')
        print('총 수리비는 ', e, '원 입니다.')
        print('총 보험료는 ', f, '원 입니다.')
        print('총 유지비는 ', t, '원 입니다.')
        print('연간 유지비는 ', y, '원 입니다.')
        print('월간 유지비는 ', m, '원 입니다.' + '\n')
print('이용해 주셔서 감사합니다~')


결과물 :

>>>
금액을 입력할 때 천단위 구분 쉼표를 사용하여도 좋습니다. 종료하려면 숫자 1을 입력하세요.

휘발유값 : 2,150
1일 주행 거리(Km) : 48
1달 주행 일자(일) : 25
자동차 연비(Km/리터) : 11
연간 수리비 : 400,000
연간 보험료 : 600,000
자동차 총 운행 연수 : 10
자동차 구입 비용 : 13,900,000
1달 주행 거리는  1,200 Km 입니다.
1달 연료비는  234,545 원 입니다.
1년 연료비는  2,814,540 원 입니다.
총 연료비는  28,145,400 원 입니다.
총 수리비는  4,000,000 원 입니다.
총 보험료는  6,000,000 원 입니다.
총 유지비는  52,045,400 원 입니다.
연간 유지비는  5,204,540 원 입니다.
월간 유지비는  433,711 원 입니다.

휘발유값 : 1
프로그램을 종료합니다!
이용해 주셔서 감사합니다~

>>>



12 함수 사용법

함수는 실행하고자 하는 명령들의 모음에 이름을 붙이고, 이 이름을 불러, 그 모아놓은 명령들을 실행 하도록 하며, 또 그 결과 값을 임의의 변수에 할당할 수 있는 편리한 기능으로서, 복잡한 프로그래밍에 유용합니다. 

함수를 사용하려면 먼저 함수 이름을 def 키워드로 정해주어야 합니다. 보통 프로그램 앞쪽에 코딩합니다. 간단한 함수 예제는 다음과 같습니다.


def removeComma(myValue) :
    r = myValue.replace(',','')
    r = int(r)
    return r
def calculateTax(price, tax_rate) :
    taxTotal = price + (price * (tax_rate/100))
    return taxTotal
g = input('휘발류 값 : ')
g = removeComma(g)
print(g)
a = int(input('가격 : '))
b = int(input('부가세(%) : '))
s = int(calculateTax(a,b))
print('총 지불액은', s, '원입니다.')


함수에서 처리한 결과 값을 다시 가져다 활용하려면, 반드시 변수에 할당해 주어야 합니다(g = removeComma(g)). IDLE에서 실행 결과 화면은 다음과 같습니다.



>>>
휘발류 값 : 1,999
1999
가격 : 200000
부가세(%) : 10
총 지불액은 220000 원입니다.

>>> type(g)
<class 'int'>

11 천단위 구분 쉼표 처리법

* 값을 입력할 때 천단위 구분 쉼표를 넣었을 경우 처리하는 방법입니다.

>>> g = input('휘발류 값 : ')
휘발류 값 : 2,100
>>> g
'2,100'
>>> g = g.replace(',', '')
>>> g
'2100'
>>> g = int(g)
>>> g
2100



* 계산 결과를 보여줄 때, 천단위 구분 쉼표를 넣어주는 방법입니다.

>>> a = 989
>>> b = 997
>>> c = a * b
>>> c
986033
>>> c = format(c, ',')
>>> c
'986,033'
>>> print('가격은 ', c, '원 입니다.')
가격은  986,033 원 입니다.

2011년 11월 9일 수요일

10 자동차 운행 거리와 연료 알아보기

print('종료하려면 연료통(리터)에 숫자 1을 입력하세요.')
g = 0
while g != 1 :
    g = int(input('연료통(리터) : '))
    if g == 1 :
        print('프로그램을 종료합니다!')
    else :
        p = int(input('남은 연료량(%) : '))
        l = int(input('연비(Km) : '))
        d = int(input('남은 거리(Km) : '))
        a = int(g * (p/100)) # 남은 연료(리터)
        b = int(d / l) # 남은 거리에 필요한 연료(리터)
        c = int(a * l) # 갈 수 있는 거리(Km)
        if a >= b :
            print('목적지까지 갈 수 있습니다!')
            print('갈 수 있는 거리는 ', c, 'Km이며, ', '남은 연료는 ', a, '리터입니다.' + '\n')
        else :

            print('목적지까지 갈 수 없습니다! 빨리 연료를 넣어야 합니다.')
            print('갈 수 있는 거리는 ', c, 'Km이며, ', '남은 연료는 ', a, '리터입니다.' + '\n')
print('이용해 주셔서 감사합니다~')


>>>
종료하려면 연료통(리터)에 숫자 1을 입력하세요.
연료통(리터) : 80
남은 연료량(%) : 20
연비(Km) : 10
남은 거리(Km) : 150
목적지까지 갈 수 있습니다!
갈 수 있는 거리는  160 Km이며,  남은 연료는  16 리터입니다.


연료통(리터) : 1
프로그램을 종료합니다!
이용해 주셔서 감사합니다~

09 회원 가입 여부 판명 하기

print('종료하려면 알파벳 q를 입력하세요.')

print('성별은 남자는 m 여자는 f로 입력해 주세요~')

s = 'q'

while g != s :

    g = input('성별(m 또는 f로 입력해 주세요) : ')

    if g == 'f' :

        print('당신의 성별은 여자입니다. 나이를 입력해 주세요~')

        a = int(input('나이 : '))

        if 13 > a > 9 :

            print('현재 나이는 ', a, '세 입니다.' + '\n' + '가입할 수 있습니다!' + '\n')

        else :

            print('죄송하지만, 가입할 수 없는 나이입니다...' + '\n')

    elif g == 'q' :

        print('프로그램을 종료합니다...')

    else :

        print('죄송합니다. 남자는 가입할 수 없습니다...' + '\n')

g = 'z' 

print('이용해 주셔서 감사합니다~')


>>>

종료하려면 알파벳 q를 입력하세요.

성별은 남자는 m 여자는 f로 입력해 주세요~

성별(m 또는 f로 입력해 주세요) : m

죄송합니다. 남자는 가입할 수 없습니다...



성별(m 또는 f로 입력해 주세요) : f

당신의 성별은 여자입니다. 나이를 입력해 주세요~

나이 : 13

죄송하지만, 가입할 수 없는 나이입니다...



성별(m 또는 f로 입력해 주세요) : f

당신의 성별은 여자입니다. 나이를 입력해 주세요~

나이 : 12

현재 나이는  12 세 입니다.

가입할 수 있습니다!



성별(m 또는 f로 입력해 주세요) : q

프로그램을 종료합니다...

이용해 주셔서 감사합니다~


이 글은 스프링노트에서 작성되었습니다.

08 할인 가격 표시 하기

print('종료하려면 숫자 1을 입력하세요.')

n = 1

while p != n :

    p = int(input('가격 : '))

    if 20000 > p >= 10000 :

        print('10% 할인합니다!')

        f = int(p - (p * 0.1))

        print('할인 가격 : ', f, '\n')

    elif p >= 20000 :

        print('20% 할인합니다!')

        f = int(p - (p * 0.2))

        print('할인 가격 : ', f, '\n')

    elif 10000 > p >= 2 :

        print('할인 품목이 아닙니다!')

        print('가격 : ', p, '\n')

p = 0

print('이용해 주셔서 감사합니다~')




>>>

종료하려면 숫자 1을 입력하세요.

가격 : 2

할인 품목이 아닙니다!

가격 :  2



가격 : 9000

할인 품목이 아닙니다!

가격 :  9000



가격 : 90000

20% 할인합니다!

할인 가격 :  72000



가격 : 1

이용해 주셔서 감사합니다~


이 글은 스프링노트에서 작성되었습니다.

07 알파벳 맞추기

a = 'a'

print('종료하고 싶을 때 어떤 알파벳을 입력해야 할까요? 알아 맞추어 보세요.')

while a != 'q' and a != 'Q' :

    a = input('알파벳을 입력하세요 : ')

    if a == 'q' or a == 'Q' :

        print('맞추었습니다. 축하합니다!')

    else :

        print('다른 알파벳을 입력하세요!')

print('이만 종료합니다~')



>>>

종료하고 싶을 때 어떤 알파벳을 입력해야 할까요? 알아 맞추어 보세요.

알파벳을 입력하세요 : x

다른 알파벳을 입력하세요!

알파벳을 입력하세요 : Q

맞추었습니다. 축하합니다!

이만 종료합니다~

06 오늘의 영단어 5개 암기 하기

* 먼저 easygui를 설치하여야 합니다.


* 다음 프로그래밍은 파이썬 2.7에서 작성하였습니다.


 


import easygui



e = easygui.enterbox('영단어 : ')


k = easygui.enterbox('뜻 : ')

s = easygui.enterbox('예제 : ')



eks = e + '\n' + k + '\n' + s + '\n' + '\n'




easygui.msgbox(eks, '오늘의 영단어')




e1 = easygui.enterbox('영단어 : ')


k1 = easygui.enterbox('뜻 : ')

s1 = easygui.enterbox('예제 : ')



eks1 = e1 + '\n' + k1 + '\n' + s1 + '\n' + '\n'




easygui.msgbox(eks + eks1, '오늘의 영단어')




e2 = easygui.enterbox('영단어 : ')


k2 = easygui.enterbox('뜻 : ')

s2 = easygui.enterbox('예제 : ')



eks2 = e2 + '\n' + k2 + '\n' + s2 + '\n' + '\n'




easygui.msgbox(eks + eks1 + eks2, '오늘의 영단어')




e3 = easygui.enterbox('영단어 : ')


k3 = easygui.enterbox('뜻 : ')

s3 = easygui.enterbox('예제 : ')



eks3 = e3 + '\n' + k3 + '\n' + s3 + '\n' + '\n'




easygui.msgbox(eks + eks1 + eks2 + eks3, '오늘의 영단어')




e4 = easygui.enterbox('영단어 : ')


k4 = easygui.enterbox('뜻 : ')

s4 = easygui.enterbox('예제 : ')



eks4 = e4 + '\n' + k4 + '\n' + s4 + '\n' + '\n'




easygui.msgbox(eks + eks1 + eks2 + eks3 + eks4, '오늘의 영단어')


이 글은 스프링노트에서 작성되었습니다.

2011년 11월 8일 화요일

05 온도변환 윈도우 프로그래밍

* 먼저 easygui를 설치하여야 합니다.


* 다음 프로그래밍은 파이썬 2.7에서 작성하였습니다.




import easygui



easygui.msgbox("화씨를 섭씨로 변환하기")

f = float(easygui.enterbox("화씨 : "))

c = round(5.0/9*(f-32),1)

easygui.msgbox("섭씨 : " + str(c))


이 글은 스프링노트에서 작성되었습니다.

2011년 11월 7일 월요일

04 간단한 메모장 만들기

addline = input('wirte(if you exit, type x) : ')



def write() :

    fid = open('log1.txt', 'a')

    print(addline, file=fid)

    fid.close()

    fidr = open('log1.txt', 'r')

    line = fidr.readlines()

    print(line)

    fidr.close()

   

while addline != 'x' :   

    if addline != 'x' :

        write()

        addline = input('wirte(if you exit, type x) : ')



print('Good Job!')


>>>

wirte(if you exit, type x) : legitimate

['legitimate\n']

wirte(if you exit, type x) : 합법적인

['legitimate\n', '합법적인\n']

wirte(if you exit, type x) : x

Good Job!





  • 메모 후 파일을 닫을 때 자동으로 기록 날짜를 적으려면 다음과 같이 합니다.


import datetime



addline = input('wirte(if you exit, type x) : ')



def write() :

    fid = open('log1.txt', 'a')

    print(addline, file=fid)

    fid.close()

    fidr = open('log1.txt', 'r')

    line = fidr.readlines()

    print(line)

    fidr.close()



def x() :

    fid = open('log1.txt', 'a')

    when = datetime.datetime.now()

    print(when, file=fid)

    print('Good Job!!')

    fid.close()

   

while addline != 'x' :   

    if addline != 'x' :

        write()

        addline = input('wirte(if you exit, type x) : ')



x()


>>>

wirte(if you exit, type x) : instance

['legitimate\n', '합법적인\n', 'ostentatious\n', '자랑삼아 드러내는\n', 'there is abundance of ostentatious cerenonies\n', 'instance\n']

wirte(if you exit, type x) : 실례

['legitimate\n', '합법적인\n', 'ostentatious\n', '자랑삼아 드러내는\n', 'there is abundance of ostentatious cerenonies\n', 'instance\n', '실례\n']

wirte(if you exit, type x) : such an instance to exist

['legitimate\n', '합법적인\n', 'ostentatious\n', '자랑삼아 드러내는\n', 'there is abundance of ostentatious cerenonies\n', 'instance\n', '실례\n', 'such an instance to exist\n']

wirte(if you exit, type x) : x

Good Job!!

>>>

wirte(if you exit, type x) : imbue

['legitimate\n', '합법적인\n', 'ostentatious\n', '자랑삼아 드러내는\n', 'there is abundance of ostentatious cerenonies\n', 'instance\n', '실례\n', 'such an instance to exist\n', '2011-11-07 16:34:48.721262\n', 'imbue\n']

wirte(if you exit, type x) :


이 글은 스프링노트에서 작성되었습니다.

03 건물 평수 구하기

h = float(input("세로 길이(m) : "))

w = float(input("가로 길이(m) : "))

a = round(h * w,1)

print("평방미터 : ", a)

p = round(a * 0.302500011,1)

print("평 : ", p)




>>>

세로 길이(m) : 9.1

가로 길이(m) : 6.1

평방미터 :  55.5

평 :  16.8


이 글은 스프링노트에서 작성되었습니다.

자동차 운행 시간 구하기

d = input("Distance(km) : ")

d = int(d)

s = input("Speed(km per hour) : ")

s = int(s)

t = round(d/s,1)

print("Travel Time : ", t)




>>>

Distance(km) : 411

Speed(km per hour) : 80

Travel Time :  5.1


이 글은 스프링노트에서 작성되었습니다.