if 문에서 break 실행이 안 되는 것을 알지만

조회수 683회

문제 4
2종보통 운전면허증 취득기준은 다음과 같다.
1) written_test(학과시험) 60점 이상
2) function_test(기능시험) 80점이상
3) road_test(도로주행) 70점이상

학과시험, 기능시험, 도로주행을 단계적으로 통과하면 운전면허증 취득이다.
학과시험 60점 미만이면 불합격이고 기능시험을 칠 수 없음. 기능시험 80점 미만이면 불합격이고 도로주행을 볼 수 없음 도로주행 결과는 운전면허증 취득이거나 불합격이다.

점수를 입력받아 운전면허시험 합격여부를 판단하기 위한 코드를 만드세요.

결과 예시)

2종보통 운전면허증 취득여부를 알아보자.
학과시험 성적을 입력하세요.
60
기능시험 성적을 입력하세요.
70
불합격
아래의 실행결과와 같이 출력하세요.
실행결과 *
2종보통 운전면허증 취득여부를 알아보자.
학과시험 성적을 입력하세요.
70
기능시험 성적을 입력하세요.
80
도로시험 성적을 입력하세요.
75
운전면허증 취득

저의 프로그래밍(?)은

print("2종보통 운전면허증 취득여부를 알아보자.")
print("학과시험 성적을 입력하세요.")
written_test=int(input())
if written_test>=60:
    print("기능시험 성적을 입력하세요.")
else: 
    print("불합격")  


function_test=int(input())
if function_test>=80:
    print("도로시험 성적을 입력하세요.")
else: 
    print("불합격")


road_test=int(input())
if road_test>=70:
    print("운전면허증 취득")
else:
    print("불합격")

불합격 하고 멈춰야되는데 자꾸 다음 지시문으로 넘어가네요 이럴 땐 어떻ㅎ게 해야하나요

3 답변

  • 윗 분께서는 함수와 return문을 이용한 방법을 제시해주셨는데(사실 이게 바람직해요), 함수를 아직 안 배우신 것 같아서 반복문 while과 반복문을 깨고 나갈 수 있는 break문을 이용한 방법을 소개해드릴게요.

    아래 코드는 제가 작성한 예시 코드에요. 이해하시기 쉽도록, 일부러 변수명은 한글로 작성하였습니다 :3

    질문 있으시면 댓글 달아주세요!

    (※ 변수 선언 부분에서 Invalid Syntax 오류가 뜬다면, 해당 파이썬 버전이 한글 변수명을 지원하지 않는 것일 수 있습니다. 이 때는 적절한 영어 이름으로 바꿔주세요!)

    #-*- Coding: UTF-8 -*-
    #시험 성적을 입력받기 전, 취득 여부 기본값의 설정
    운전면허취득여부 = False;
    
    while (True):
    
        #필기시험의 성적이 60점 미만인지를 봅니다.
        필기시험성적 = int(input("필기시험 성적을 입력하십시오 >> "))
    
        if (필기시험성적 < 60):
            #불합격을 통지하고, 반복문을 깨고 나갑니다.
            print("[!] 필기시험 불합격.");
            break;
    
    
        #실기시험의 성적이 80점 미만인지를 봅니다.
        실기시험성적 = int(input("실기시험 성적을 입력하십시오 >> "))
    
        if (실기시험성적 < 80):
            #불합격을 통지하고, 반복문을 깨고 나갑니다.
            print("[!] 실기시험 불합격.");
            break;
    
    
        #도로주행의 성적이 70점 미만인지를 봅니다.
        도로주행성적 = int(input("도로주행 성적을 입력하십시오 >> "))
    
        if (도로주행성적 < 70):
            #불합격을 통지합니다.
            print("[!] 도로주행 불합격.");
        else:
            운전면허취득여부 = True;
    
        #취득했든 못했든 일단 여기까지 왔으면 작업을 끝내야 하므로,
        #반복문을 깨고 나갑니다.
        break; 
    
    print("\n[?] 운전면허 취득 여부: " + str(운전면허취득여부))
    
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 궁금하신 것만 답을 드리자면: 이걸 함수로 감싸고 원하는 곳에서 뭔가를 return해 보세요. 그러면 그 함수는 그 자리에서 중단이 됩니다.

    def driving_test() :
        print("2종보통 운전면허증 취득여부를 알아보자.")
        print("학과시험 성적을 입력하세요.")
        written_test=int(input())
        if written_test>=60:
            print("기능시험 성적을 입력하세요.")
        else: 
            print("불합격")
            return False
    # 후략
    

    사족을 달자면: 문제를 읽어보시면 이런 말이 나옵니다.

    학과시험 60점 미만이면 불합격이고 기능시험을 칠 수 없음.
    기능시험 80점 미만이면 불합격이고 도로주행을 볼 수 없음
    도로주행 결과는 운전면허증 취득이거나 불합격이다.

    이 텍스트는 이 문제가 어떤 조건문을 원하는지를 좀 민망할 정도로 명확히 보여주고 있습니다.

    학과시험 60점 미만이면 :
        불합격
    [아니라면 : ]
        [기능시험을 볼 수 있음]
        [기능시험을 본다]
        기능시험 80점 미만이면 :
            불합격
        [아니라면 : ]
            [도로주행을 볼 수 있음]
            [도로주행을 본다]
            도로주행 결과가 70점 미만이면 :
                불합격
            [아니라면 : ]
                운전면허증 취득
    

    참고가 되면 좋겠네요.

  • if문을 합쳐서 쓰면 되지 않나요? 따로 쓰는 이유가 있나요?

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)