대학생 코딩 과제 대행 java, python, oracle 여섯 번째

https://open.kakao.com/o/s3aMpbA

이번에는 다섯 번째 과제를 의뢰했던 사람이 연이어 아래와 같은 내용의
과제를 의뢰했다.

# 7 주차 강의자료: 함수

"""
제출 시에 파일 형식을 꼭 지켜주세요.
이름_week07_HW.py (예. 이재호_week07_HW.py)
"""

## 주민등록번호를 만들어주는 함수 CN_maker() 를 만들어 봅시다.
# CN_maker() 함수의 매개변수는 사용자 정보가 포함된 딕셔너리이며
# 이 딕셔너리의 Key는 다음과 같습니다.

# 'Year': 출생년도. 1900년 ~ 2099 년으로 범위를 제한합니다. (예) 1986
# 'Month': 출생한 달. 1 ~ 12 월로 범위를 제한합니다. (예) 12
# 'Day': 출생한 일. 각 달에 맞게 범위를 제한합니다. 2 월은 무조건 28 일로 가정합니다. (예) 22
# 'Sex': 성별. 남자, 남성, 남 모두 가능하도록 합시다. (예) 남

# Key 정보들은 사용자로부터 입력을 받습니다.
# 입력을 받는 방법은
# CN_maker() 함수 안에 있어도 되고,
# 함수 밖에 있어도 되고,
# 다른 함수로 선언해서 사용해도 되고,
# 다른 함수로 선언해서 CN_maker() 함수 안에 사용해도 됩니다.
#함수 리턴값으로 출력해도 무관함!!!조건에 맞춰서 만들면 됨!
#조건이 충족안되면 '다시 입력해주세요' 하기!

# 결과적으로

## 마지막 여섯 자리는 ******로 고정합니다.

"""
(실행 예시)

++++++++++++++++++++++
++++주민등록번호 생성기++++
++++++++++++++++++++++

개인 정보를 입력해 주세요.
년도: 1986
달: 12
일: 22
성별: 남자

당신의 주민등록번호는 861222 - 1****** 입니다.
"""

def make_input():
    print("+++++++++++++++++++++++++")
    print("++++주민등록번호 생성기++++")
    print("+++++++++++++++++++++++++")
    print()
    print("개인 정보를 입력해 주세요.")
    list_month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] # index 0,2,4,6,7,9,11 31일까지
    day31_month = [1, 3, 5, 7, 8, 10, 12]
    day30_month = [4, 6, 9, 11]
    day28_month = [2]
    year = input("년도 : ")
    if (int(year) < 1900 or int(year) > 2099):
        print()
        print("**************** 1900~2099년생만 취급합니다. ****************")
        print("**************** 년도를 위에 맞게 입력해주세요 ****************")
        print()
        return make_input()
    month = input("달 : ")
    if (int(month) not in list_month):
        print()
        print("************ 외계에서 오셨나요? 01~12만 취급합니다. *************")
        print("**************** 월을 위에 맞게 입력해주세요 ****************")
        print(" ************** 처음부터 다시 입력합니다. ****************")
        print()
        return make_input()
    day = input("일 : ")
    if (int(month) in day31_month):
        if (int(day) < 1 or int(day) > 31):
            print()
            print("******** 1,3,5,7,8,10,12월은 1~31일 까지 입니다. *****")
            print("******** 처음부터 다시 입력합니다. *****")
            print()
            return make_input()
    elif (int(month) in day28_month):
        if (int(day) < 1 or int(day) > 28):
            print()
            print("******** 2월은 1~28일 까지 입니다. *****")
            print("******** 처음부터 다시 입력합니다. *****")
            print()
            return make_input()
    elif (int(month) in day30_month):
        if (int(day) < 1 or int(day) > 30):
            print()
            print("******** 4,6,9,11월은 1~30일 까지 입니다. *****")
            print("******** 처음부터 다시 입력합니다. *****")
            print()
            return make_input()
    sex = input("성별 : ")
    if(sex != "남자" and sex != "여자"):
        print()
        print("************ 주민등록번호는 성소수자들을 배려하지 않습니다. ************")
        print("****************** 남자 또는 여자를 입력해주세요. ********************")
        print("******************** 처음부터 다시 입력합니다. **********************")
        print()
        return make_input()
    cn_dictionary = {"Year": year, "Month": month, "Day": day, "Sex": sex}
    return cn_dictionary


information = make_input()


def CN_maker(dictionary):
    year = dictionary["Year"]
    month = dictionary["Month"]
    day = dictionary["Day"]
    number = 0
    if (int(day) < 10):
        day = "0" + day
    sex = dictionary["Sex"]
    if (year[0] == "1"):
        if (sex == "남자"):
            number = 1
        elif (sex == "여자"):
            number = 2
    elif (year[0] == "2"):
        if (sex == "남자"):
            number = 3
        elif (sex == "여자"):
            number = 4

    year = year[2:]
    first = year + month + day
    second = str(number) + "******"
    return print("당신의 주민등록번호는\t" + first + '-' + second + "\t입니다.")


CN_maker(information)

댓글

이 블로그의 인기 게시물

About Kafka Basic

About JVM Warm up

About ZGC

Spring Boot Actuator readiness, liveness probes on k8s

About G1 GC

sneak peek jitpack

About idempotent

C 언어 구조체의 포인터 멤버 변수

Synology NAS에 MariaDB 10에 Mysql workbench로 원격접속하기

About Websocket minimize data size and data transfer cost on cloud