본문 바로가기

파이썬(PYTHON)/프로젝트
[파이썬(Python)] 소소한 프로그래밍 연습 - 여러 가지 모음

1. 사이트별 비밀번호 생성기

'''
#사이트별로 비밀번호를 만들어 주는 프로그램을 작성하시오.

예) http://naver.com
규칙1 : http:// 부분은 제외 -> naver.com
규칙2 : 처음 만나는 점(.) 이후 부분은 제외 -? naver
규칙3 : 남은 글자 중 처음 세자리 + 글자 갯수 + 글자 내 'e' 갯수 + "!"로 구성
예) 생성된 비밀번호: nav51!
'''

#url = "http://naver.com"
url = "http://daum.net"

a = url.split( "/")

b = a[2] # naver.com

c = b.split(".")

d = c[0] # naver

e = d[0:3] # 처음 세자리

f = len(d) #글자 갯수..(길이?)

g = d.count('e') # e 갯수

password =e + str(f) + str(g) + "!"

print("생성된 %s의 비밀번호 : %s" % (url, password))


==========================================================================
==============

2. 승객 매칭

'''
당신은 Cocoa 서비스를 이용하는 택시 기사님입니다.
50명의 승객과 매칭 기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.

조건1 : 승객별 운행 소요 시간은 5분 ~ 50분 사이의 난수로 정해집니다.
조건2 : 당신은 소요 시간 5분 ~ 15분 사이의 승객만 매칭해야 합니다.

(출력문 예제)
[O] 1번째 손님 (소요시간 : 15분)
[  ] 2번째 손님 (소요시간 : 50분)
[O] 3번째 손님 (소요시간 : 5분) 
...
[  ] 50번째 손님 (소요시간 : 16분) 

총 탑승 승객 : 2 분
'''

from random import *

cnt = 0

for sequence in range(1,49) :
    take_time= randrange(5,51)
    if (take_time >=5 and take_time<=15) :
        print("[O] %d번째 손님 (소요시간 : %d분)" %(sequence, take_time))
        cnt += 1
        
    else :
        print("[  ] %d번째 손님 (소요시간 : %d분)" %(sequence, take_time))

print("\n 총 탑승 승객 : ", cnt, "분")

***cnt는 해설 참고.

==========================================================================
==============

3. 표준 체중 구하기

'''
Quiz) 표준 체중을 구하는 프로그램을 작성하시오

* 표준 체중 : 각 개인의 키에 적당한 체중

 

(성별에 따른 공식)

 남자 : 키(m) * 키(m) * 22

 여자 : 키(m) * 키(m) * 21

 

조건1 : 표준 체중은 별도의 함수 내에서 계산

        * 함수명 : std_weight 

        * 전달값 : 키(height), 성별(gender)

조건2 : 표준 체중은 소수점 둘째자리까지 표시

 

(출력 예제)
키 175cm 남자의 표준 체중은 67.38kg 입니다.
'''

def std_weight (height, gender) :
    if gender == "남자" :
        weight1 = (height/100) * (height/100) * 22
        return round(weight1, 2)
    elif gender == "여자" :
        weight2 = (height/100) * (height/100) * 21
        return round(weight2, 2)

height = input("당신의 키는 어떻게 되나요? : ")
gender = input("당신의 성별은 무엇인가요?(남자 혹은 여자로 대답해 주세요.) : ")

print( std_weight(int(height), gender) )


==========================================================================
==============

4. 보고서 파일 만들기

'''
Quiz) 당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있습니다.

보고서는 항상 아래와 같은 형태로 출력되어야 합니다.

- X 주차 주간보고 -

부서 : 

이름 : 

업무 요약 : 

 1주차부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하시오.

조건 : 파일명은 '1주차.txt', '2주차.txt', ... 와 같이 만듭니다.

그리고 각 파일에는 해당 주차에 해당하는 주간보고 내용이 포함됩니다.

(예 : 35주차.txt 파일 내용)

- 35 주차 주간보고 -

부서 : 

이름 : 

업무 요약 :

'''

week_num = range(1,51)

for file_name in week_num :
    weekely_file =open("d:/"+ str(file_name) + "주차.txt", "w", encoding="utf8")
    weekely_file.write("- " + str(file_name) + " 주차 주간보고 -\n")
    weekely_file.write("부서 : \n")
    weekely_file.write("이름 : \n")
    weekely_file.write("업무 요약 : \n")
    weekely_file.close()


==========================================================================
==============

5. 부동산 정보 출력

'''
Quiz) 주어진 코드를 활용하여 부동산 프로그램을 작성하시오.

(출력 예제)
총 3대의 매물이 있습니다.
강남 아파트 매매 10억 2010년
마포 오피스텔 전세 5억 2007년
송파 빌라 월세 500/50 2000년

class House:
    # 매물 초기화 : 위치, 건물 종류, 매물 종류, 가격, 준공년도
    def __init__(self, location, house_type, deal_type, price, completion_year):
        pass

    # 매물 정보 표시
    def show_detail(self):
        pass
'''

class House:
    # 매물 초기화 : 위치, 건물 종류, 매물 종류, 가격, 준공년도
    def __init__(self, location, house_type, deal_type, price, completion_year):
        self.location = location
        self.house_type = house_type
        self.deal_type = deal_type
        self.price = price
        self.completion_year = completion_year

    # 매물 정보 표시
    def show_detail(self):
        print( self.location, self.house_type, self.deal_type, self.price, self.completion_year )

houses = []
house1 = House("강남", "아파트", "매매", "10억", "2010년")
house2 = House("마포", "오피스텔", "전세",  "5억", "2007년")
house3 = House("송파", "빌라", "월세", "500/50", "2000년")


houses.append(house1)
houses.append(house2)
houses.append(house3)


print("총 %d대의 매물이 있습니다." %len(houses))
for house in houses:
    house.show_detail()


==========================================================================
==============

6. 치킨 주문

class SoldOutError (Exception) :
    def __init__(self) :
        pass

chicken = 10 # 남은 치킨 수
waiting = 1 # 홀 안에는 현재 만석. 대기번호 1부터 시작

try : 
    while(True):
        print("[남은 치킨 : %d]"%chicken)
        order = int(input("치킨 몇 마리 주문하시겠습니까?"))
        if order<1 :
            raise ValueError
        elif order > chicken: # 남은 치킨보다 주문량이 많을 때
            print("재료가 부족합니다.")
        else:
            print("[대기번호 %d] %d마리 주문이 완료되었습니다."%(waiting, order))
            waiting += 1 # 대기번호 증가
            chicken -= order # 주문 수만큼 남은 치킨 감소

        if chicken == 0 :
            raise SoldOutError
            break        

except ValueError :
    print("잘못된 값을 입력하였습니다.")

except SoldOutError :
    print("재고가 소진되어 더 이상 주문을 받지 않습니다.")


==========================================================================
==============

7. 시그니처 남기기

'''
Quiz) 프로젝트 내에 나만의 시그니처를 남기는 모듈을 만드시오 

조건: 모듈 파일명은 byme.py 로 작성

 
(모듈 사용 예제)
import byme
byme.sign()


(출력 예제)
이 프로그램은 나무의 하루에 의해 만들어졌습니다.
주소: https://sorrel012.tistory.com/
이메일 : sorrel012@gmail.com
'''

def sign():  #byme 모듈
    print("이 프로그램은 나무의 하루에 의해 만들어졌습니다.")
    print("주소: https://sorrel012.tistory.com/")
    print("이메일 : sorrel012@gmail.com")
import byme  #만든 모듈 사용

byme.sign()