콘텐츠 내 자동삽입광고

광고1

posted by 초코생크림빵 2025. 8. 26. 17:45
반응형

항공권 할인율을 조회하여 출력하는 파이썬 코드

 

remain_period=int(input('몇개월 후의 여행을 계획중인가요?(3개월 이상) '))
country=input('여행할 지역을 입력하세요(아시아,유럽,미주): ')

if 3 <= remain_period < 6:
    if country == '아시아':
        result = 8
    elif country == '유럽':
        result = 9
    elif country == '미주':
        result = 10
    else:
        result = None
elif 6 <= remain_period < 12:
    if country == '아시아':
        result = 15
    elif country == '유럽':
        result = 17
    elif country == '미주':
        result = 20
    else:
        result = None
elif 12 <= remain_period :
    if country == '아시아':
        result = 25
    elif country == '유럽':
        result = 30
    elif country == '미주':
        result = 40
    else:
        result = None
else:
    result = None

if result:
    print(f'{remain_period}개월 이후의 {country} 항공권은 {result}% 할인')
else:
    print('기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.')
     
결과)
몇개월 후의 여행을 계획중인가요?(3개월 이상) 13
여행할 지역을 입력하세요(아시아,유럽,미주): 유럽
13개월 이후의 유럽 항공권은 30% 할인

몇개월 후의 여행을 계획중인가요?(3개월 이상) 2
여행할 지역을 입력하세요(아시아,유럽,미주): 아시아
기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.

파이썬 소스 및 결과값입니다. 소스를 자세히 설명해주세요.

 

이 코드는 사용자가 입력한 여행 시기와 지역에 따라 항공권 할인율을 계산하고 출력하는 프로그램입니다. 크게 사용자 입력, 조건문 처리, 그리고 결과 출력의 세 단계로 나눌 수 있어요.


전체 코드 요약

이 프로그램은:

  • 여행까지 남은 개월 수(remain_period)와
  • 여행할 지역(country)

을 입력받고, 항공권의 할인율을 계산해서 출력합니다.

할인은 남은 기간이 많을수록, 지역에 따라 더 큰 할인이 적용됩니다.

 

코드 분석

1. 사용자 입력 부분

Python
 
remain_period=int(input('몇개월 후의 여행을 계획중인가요?(3개월 이상) '))
country=input('여행할 지역을 입력하세요(아시아,유럽,미주): ')
  • remain_period = int(input(...)) : input() 함수를 통해 사용자에게 여행까지 남은 기간을 문자열로 입력받아요. 이 문자열은 int() 함수를 사용하여 정수형으로 변환되어 remain_period 변수에 저장됩니다.
  • country = input(...) : input() 함수를 사용해 여행할 지역을 문자열로 입력받아 country 변수에 저장해요.

 

  • input() 함수를 통해 사용자로부터 여행까지 남은 개월 수를 입력받습니다.
  • int()를 사용해 문자열을 정수로 변환합니다.
  • 변수 remain_period는 남은 개월 수를 담고 있습니다.
  • 조건: 3개월 이상 입력해야 정상 작동합니다.

 

  • 사용자에게 여행할 지역을 입력받습니다.
  • 변수 country에는 입력된 지역 문자열이 저장됩니다.

 

 

2. 조건문(if-elif-else) 처리 부분

Python
 
if 3 <= remain_period < 6:
    # ...
elif 6 <= remain_period < 12:
    # ...
elif 12 <= remain_period :
    # ...
else:
    result = None
  • 이 부분이 프로그램의 핵심 로직이에요. remain_period 변수에 저장된 값에 따라 다른 조건문 블록이 실행됩니다.
  • 첫 번째 if 블록 (3 <= remain_period < 6): 여행까지 남은 기간이 3개월 이상 6개월 미만일 경우 실행돼요.
  • elif 블록 (6 <= remain_period < 12): 첫 번째 if 조건에 해당하지 않고, 남은 기간이 6개월 이상 12개월 미만일 경우 실행돼요.
  • 세 번째 elif 블록 (12 <= remain_period): 앞선 조건들에 모두 해당하지 않고, 남은 기간이 12개월 이상일 경우 실행됩니다.
  • else 블록: 위의 어떤 조건에도 해당하지 않을 때 실행돼요. 즉, 여행 기간이 3개월 미만으로 입력되었을 때 이 블록이 실행되며, result 변수에 None이 할당됩니다. 이는 "할인이 지원되지 않는 기간"이라는 것을 의미합니다.

 

if 3 <= remain_period < 6:

  • 여행이 3개월 이상 6개월 미만 남았을 때
  • 할인율은 다음과 같이 적용됩니다:
    • 아시아: 8%
    • 유럽: 9%
    • 미주: 10%
 
 

각 기간 조건문 안에는 다시 country 변수를 확인하는 중첩된 if-elif-else문이 있어요.

Python
 
    if country == '아시아':
        result = 8
    elif country == '유럽':
        result = 9
    elif country == '미주':
        result = 10
    else:
        result = None
  • 이 조건문들은 입력받은 country 값에 따라 result 변수에 다른 할인율(%)을 할당해요.
  • 예를 들어, remain_period가 13, country가 '유럽'이라면 세 번째 elif 블록이 실행되고, 그 안에서 country == '유럽' 조건이 참이 되어 result에 30이 할당되는 방식이죠.

else: (기타의 경우)

  • 남은 개월 수가 3개월 미만이거나, 지역명이 맞지 않을 경우
  • 할인 없음 (result = None)

 

3. 결과 출력 부분

if result:
    print(f'{remain_period}개월 이후의 {country} 항공권은 {result}% 할인')
else:
    print('기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.')
result 값이 존재하면 할인율을 출력합니다.

result가 None이면 오류 메시지를 출력합니다.

 

Python

 
if result:
    print(f'{remain_period}개월 이후의 {country} 항공권은 {result}% 할인')
else:
    print('기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.')
  • 이 마지막 if문은 할인율이 정상적으로 계산되었는지 확인해요.
  • if result:는 result 변수에 None이 아닌 **유효한 값(예: 8, 9, 10 등)**이 들어있는지 확인하는 조건문이에요.
  • 만약 result가 None이 아니라면, f-string을 사용해 "13개월 이후의 유럽 항공권은 30% 할인"과 같은 형식으로 할인 정보를 출력합니다.
  • result가 None이라면, "기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다."라는 메시지를 출력합니다. 이는 입력한 기간이 3개월 미만이거나, '아시아', '유럽', '미주' 외 다른 지역을 입력했을 때 나타나는 결과입니다.

실행 결과 분석

결과 1: 13개월 후의 유럽 여행

  • remain_period에 13이, country에 **'유럽'**이 입력됩니다.
  • if-elif 조건문 중 12 <= remain_period 조건이 참이 되어 해당 블록이 실행돼요.
  • 이 블록 안에서 country == '유럽' 조건이 참이 되어 result에 30이 할당됩니다.
  • 마지막 출력문에서 result가 None이 아니므로, "13개월 이후의 유럽 항공권은 30% 할인"이라는 메시지가 출력됩니다.

결과 2: 2개월 후의 아시아 여행

  • remain_period에 2가, country에 **'아시아'**가 입력됩니다.
  • if-elif 조건문 중 어떤 것에도 해당하지 않기 때문에 else 블록이 실행돼요.
  • result에 None이 할당됩니다.
  • 마지막 출력문에서 if result: 조건이 거짓이 되므로, "기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다."라는 메시지가 출력됩니다.

 

질문)

if result:

print(f'{remain_period}개월 이후의 {country} 항공권은 {result}% 할인')else:

print('기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.') 여기에서 result는 조건입니다. 조건은 결과값이 참 또는 거짓이여야 하는데요. result에 값이 들어 있으면 참이 되는건가요?

 

네, 맞아요. 파이썬에서 result 변수에 값이 들어 있으면 True(참)로, 값이 없거나 특정 값이 들어 있으면 False(거짓)로 판단합니다.


파이썬에서의 참과 거짓

프로그래밍에서 조건문은 True 또는 False라는 논리값에 따라 실행됩니다. 파이썬에서는 if 문 뒤에 변수를 바로 넣었을 때, 그 변수가 "참 같은 값"인지, "거짓 같은 값"인지 자동으로 판단합니다. 이러한 값들을 각각 **'truthy'(참 같은 값)**와 **'falsy'(거짓 같은 값)**라고 불러요.

1. Truthy (참 같은 값)

result 변수에 0이 아닌 숫자가 들어있거나, 비어 있지 않은 문자열, 리스트, 딕셔너리 등이 들어있으면 True로 판단됩니다.

  • 예시: result = 10 👉 if result:는 True입니다.
  • 예시: result = '유럽' 👉 if result:는 True입니다.

2. Falsy (거짓 같은 값)

result 변수에 숫자 0, 빈 문자열(''), 빈 리스트([]), 빈 딕셔너리({}), 그리고 **None**이 들어있으면 False로 판단됩니다.

  • 예시: result = 0 👉 if result:는 False입니다.
  • 예시: result = '' 👉 if result:는 False입니다.
  • 예시: result = None 👉 if result:는 False입니다.

질문하신 코드에 적용하기

제공하신 코드에서 result는 할인율을 저장하는 변수예요.

  • 할인율이 계산된 경우: remain_period와 country가 유효하면 result 변수에 **0이 아닌 숫자(예: 8, 9, 10 등)**가 할당돼요. 이 숫자는 truthy 값이므로 if result:는 True가 되어 첫 번째 print() 함수가 실행됩니다.
  • 할인율이 계산되지 않은 경우: 입력값이 유효하지 않아 result = None이 실행됩니다. None은 falsy 값이므로 if result:는 False가 되어 else 블록의 print() 함수가 실행됩니다.

따라서, if result:는 result 변수에 유효한 할인율이 저장되었는지를 간결하게 확인하는 편리한 방법입니다.

 

 

추가 답변)

질문 요약

질문하신 부분은 다음 코드의 동작 원리입니다:

 
if result: print(f'{remain_period}개월 이후의 {country} 항공권은 {result}% 할인') else: print('기간 또는 지역 정보가 바르지 않거나, 할인이 지원되지 않는 지역입니다.')

여기서 result는 숫자입니다. 그런데 if result: 라는 조건이 어떻게 참/거짓으로 판단되는지가 궁금하신 거죠?


✅ 결론 먼저

if result:는 result에 "값이 있으면 참(True)"이 됩니다.

  • result가 0이 아닌 숫자 → True (조건 만족)
  • result가 0, None, False, '' (빈 문자열), [] (빈 리스트) 등 → False (조건 불만족)

🧠 Python의 truthy/falsy 개념

파이썬에서는 아래처럼 다양한 값들이 **조건문에서 자동으로 참(True)/거짓(False)**으로 평가됩니다:

값평가 결과
0 False
None False
빈 문자열 '' False
빈 리스트 [] False
그 외 값들 (숫자, 문자열 등) True

즉, 이 코드에서:

 
if result:

는 다음과 같이 해석됩니다:

  • result = 30 → if 30: → ✅ 조건 참 → 출력 O
  • result = None → if None: → ❌ 조건 거짓 → else 문 실행

🎯 정리

  • if result:는 result가 비어 있지 않고 유효한 값(0이 아닌 숫자 등)이면 참(True) 으로 판단합니다.
  • 파이썬에서는 숫자 값도 조건문에서 True/False로 자동 변환되어 사용됩니다.
  • 이런 방식은 간결한 코드 작성에 유용하지만, result == None 또는 **result is not None**처럼 명시적으로 조건을 표현하는 것이 더 안전할 때도 있습니다.
반응형

콘텐츠 내 자동삽입광고