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

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

이번에는 아래와 같은 과제를 파이썬3로 의뢰 받았다.

## 주민등록번호 유효성 검사기

# 주민등록번호는 일정한 규칙으로 이루어진 숫자의 연속입니다.
# 이 규칙을 이용하면, 어떤 숫자열이 입력으로 들어왔을 때,
# 이 숫자열이 적합한 주민등록번호인가를 판별할 수 있습니다.

# 주민등록번호에 반영된 규칙은 매우 많지만,
# 두 가지로 제한합니다.
# 1. 첫 6 자리는 생년월일입니다. 년도는 00 ~ 99 까지 가능하고, 월은 01 ~ 12 까지 가능합니다. 일은 01 ~ 31 까지 가능합니다.
#   (각 월에 따라서 일의 제약이 달라집니다. 2월은 28일까지 인 것으로 해주세요.)
# 2. 7 번째 숫자는 1 ~ 4 만 허용합니다.
# 1 : 1900 년대에 태어난 남자
# 2 : 1900 년대에 태어난 여자
# 3 : 2000 년대에 태어난 남자
# 4 : 2000 년대에 태어난 여자

# 입력은 ****** - ******* 형식으로 입력을 받는다고 가정합니다.
# 출력은 유효한 경우에는 생년월일과 성별을 출력하고,
# 유효하지 않은 경우에는 유효하지 않다는 메세지를 출력하도록 합시다.
# 입력값으로 특정 값을 받으면 프로그램이 종료되도록 만듭시다.

"""
(실행 예시)
확인하고 싶은 주민번호를 입력해주세요: 940822 - 1434652

1994 년 8 월 22 일 생 남자입니다.

확인하고 싶은 주민번호를 입력해주세요: 990231 - 2098367

유효하지 않은 주민등록번호입니다.

확인하고 싶은 주민번호를 입력해주세요: 종료

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

# -*- coding:utf-8 -*-
while (True):
    print('"""')
    print()
    day31_month = [1, 3, 5, 7, 8, 10, 12]
    day30_month = [4, 6, 9, 11]
    day28_month = [2]
    number = input("확인하고 싶은 주민번호를 입력해주세요:")
    if (number == "종료"):
        print()
        print("프로그램을 종료합니다.")
        print('"""')
        break
    else:# input 값이 종료 이외일 경우 밑에 코드들 실행
        number_list = number.split('-')#'-' 기준으로 나누어서 리스트로 만듬
        number1 = int(number_list[0])#생년월일 부분 정수형
        p_number1 = number_list[0]#생년월일 부분 문자형
        year = int(number_list[0][0:2])#생년 정수형
        p_y = number_list[0][0:2]#생년 문자형
        month = int(number_list[0][2:4])#월 정수형
        day = int(number_list[0][4:])#일 정수형
        number2 = int(number_list[1])#뒤에 7자리 정수형
        p_number2 = number_list[1]#뒤에 7자리 문자형
        sex = int(number_list[1][0])#뒤에 7자리 중 첫숫자 정수형
        if (len(p_number1) != 6):#생년월일이 6자리가 아니면 실행
            print()
            print("유효하지 않은 주민등록번호입니다.")
            print()
            continue
        elif (len(p_number2) != 7):#뒤에 7자리가 7자리가 아니면 실행
            print()
            print("유효하지 않은 주민등록번호입니다.")
            print()
            continue
        if (not(0 < month < 13)):#월이 1~12 사이 숫자 아니면 실행
            print()
            print("유효하지 않은 주민등록번호입니다.")
            print()
            continue
        if (month in day31_month):
            if (not (0 < day < 32)):#일이 1~31사이가 아닐경우
                print()
                print("유효하지 않은 주민등록번호입니다.")
                print()
                continue

        if (month in day28_month):#월이 2월일 경우
            if (not(0 < day < 29)):#일이 1~28일이 아닐경우 실행
                print()
                print("유효하지 않은 주민등록번호입니다.")
                print()
                continue

        if (month in day30_month):
            if (not (0 < day < 31)):  # 일이 1~30사이가 아닐경우
                print()
                print("유효하지 않은 주민등록번호입니다.")
                print()
                continue
        if (sex == 1 or sex == 2):#뒷7자리중 첫자리가 1 또는 2인 경우
            p_y = "19" + p_y
            if (sex == 1):#1일경우
                print()
                print(p_y + " 년 " + str(month) + " 월 " + str(day) + " 일 생 남자 입니다.")
                print()
            elif (sex == 2):#2일 경우
                print()
                print(p_y + " 년 " + str(month) + " 월 " + str(day) + " 일 생 여자 입니다.")
                print()
        if (sex == 3 or sex == 4):##뒷7자리중 첫자리가 3 또는 4인 경우
            if (year > 17):  # 현재 년도 보다 더 미래일수가 없다.
                print("유효하지 않은 주민등록번호입니다.")
                continue
            else:
                p_y = "20" + p_y
                if (sex == 3):#3인경우
                    print()
                    print(p_y + " 년 " + str(month) + " 월 " + str(day) + " 일 생 남자 입니다.")
                    print()
                elif (sex == 4):#4일경우
                    print()
                    print(p_y + " 년" + str(month) + " 월" + str(day) + " 일 생 여자 입니다.")
                    print()

댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

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