본문 바로가기

Personal Study

멘토씨리즈 Python 예제풀이 / Ch6. 파이썬 모듈

 

 

Chapter 6. 파이썬 모듈

 

section12. 모듈과 import

 

기본예제1 

개인정보의 보안처리를 위해 주어진 인수의 일부를 *로 바꿔서 반환하는 함수를 만들어 

이를 모듈로 저장하는 프로그램입니다.
  모듈 생성하기
      모듈명: my_secure.py
      secure_name(): 김철수 → 김**
      secure_no(): 951012-1234567 → 951012-1******
      secure_phone(): 010-1234-5678 → 010-****-5678
<실행 예>

김**

951012-1******

010-****-5678


def secure_name(name):
    return name[0] + '**'
def secure_no(no):
    return no[0:8] + '******'
def secure_phone(phone):
    return phone.replace(phone[4:8], '****')



기본예제2

다음은 컴퓨터가 주사위를 던지면 사용자가 주사위의 숫자를 맞히는 프로그램입니다.

사용자가 맞힐때까지 게임은 계속됩니다.
<실행 예>

주사위 값은 얼마일까요? >>> 1

오답입니다. 다시 시도하세요.

주사위 값은 얼마일까요? >>> 2

오답입니다. 다시 시도하세요.

주사위 값은 얼마일까요? >>> 3

3! 정답입니다.


import random
dice = random.randint(1,6)
while True:
    user = int(input('주사위 값을 입력하세요'))
    if dice == user:
        print('정답입니다.')
        break
    else:
        print('오답이니 다시 입력하세요.')



기본예제3

다음은 1부터 천만까지의 합계를 구하고 그 결과와 연산에 걸린 시간을 함께 출력하는 프로그램입니다.
<실행 예>

총 합은 50000005000000입니다.

총 1.280625초가 소요되었습니다.


from datetime import *
start = datetime.now()
total = 0
for num in range(1, 10000001):
    total += num
end = datetime.now()
elapse = end - start
elapse = elapse.total_seconds()
print('총 합은 {}입니다.'.format(total))
print('소요시간은 {}초입니다.'.format(elapse))



응용예제1

자동으로 실행되는 로또 추첨 프로그램을 다음 지시사항에 따라 구현하세요.
  1~45사이의 모든 정수를 순서대로 pot리스트에 저장
  다음 과정을 6번 반복함
      pot리스트를 무작위로 섞어줌
      pot리스트의 마지막 숫자를 하나만 빼서 jackpot리스트에 저장함.
      2초동안 잠시 멈춤
  jackpot 리스트의 모든 요소를 오름차순 정렬함
  jackpot 리스트의 모든 요소를 출력함.
<실행 예>

1번째 당첨번호는 38입니다.

2번째 당첨번호는 42입니다.

3번째 당첨번호는 25입니다.

4번째 당첨번호는 23입니다.

5번째 당첨번호는 40입니다.

6번째 당첨번호는 7입니다.

이번 당첨번호는 [7, 23, 25, 38, 40, 42] 입니다.


import random
pot = []
for i in range(1,7):
    num = random.randint(1,45)
    print('{}번째 당첨번호는 {}입니다.'.format(i, num))
    if num not in pot:
        pot.append(num)
print('이번 당첨번호는 {}입니다.'.format(pot))



응용예제2

다음 지시사항에 따라 UpDown게임을 구현하세요.
  1에서 100까지의 정수 중 하나를 임의로 생성하면 사용자는 그 숫자를 맞힐때까지 값을 예상하여 입력합니다.
  사용자가 입력한 값이 정답보다 작으면 Up, 정답보다 크면 Down을 출력합니다.
  정답을 맞히면 몇 초만에 정답을 맞혔는지 출력하세요. 이때 소수 아래 값은 내림 처리하여 정수로 출력하세요.
<실행 예>

UpDown 게임을 시작합니다.

어떤 값일까요? >>> 50

Down

어떤 값일까요? >>> 25

Up

어떤 값일까요? >>> 35

Down

어떤 값일까요? >>> 30

Down

어떤 값일까요? >>> 26

Up

어떤 값일까요? >>> 27

정답입니다.

18초만에 성공하셨습니다.


import math
import random
from datetime import *
start = datetime.now()
rand_num = random.randint(1,100)
while True:
    user_num = int(input('숫자를 입력하세요'))
    if user_num == rand_num:
        print('정답입니다.')
        break
    elif user_num > rand_num:
        print('Down')
        continue
    elif user_num < rand_num:
        print('Up')
        continue
end = datetime.now()
elapse = end - start
elapse = math.floor(elapse.total_seconds())
print('{}초만에 성공했습니다.'.format(elapse))