티스토리 뷰

Python

[Python] Else If Statements

Dongi 2022. 1. 30. 05:03

 

 

 

안녕하세요 동기 여러분! 오늘은 Else if문에 대해 알아봅시다!

 

 

 

 

 

 

Else If Statements

지지난 시간에 알아본 Boolean Operators 포스팅에 오버워치 경쟁전에 관한 코드가 있었습니다.

ur_score = int(input("현재 점수를 입력하시오 : "))

if ur_score >=0 and ur_score < 75:
    print("당신의 실력 등급은 없습니다.")

if ur_score >= 75 and ur_score < 150:
    print("당신의 실력 등급은 브론즈입니다.")
    
if ur_score >= 150 and ur_score < 300:
    print("당신의 실력 등급은 실버입니다.")
    
if ur_score >= 300 and ur_score < 600:
    print("당신의 실력 등급은 골드입니다.")
    
if ur_score >= 600 and ur_score < 900:
    print("당신의 실력 등급은 플래티넘입니다.")
    
if ur_score >= 900 and ur_score < 1350:
    print("당신의 실력 등급은 다이아몬드입니다.")
    
if ur_score >= 1350 and ur_score < 1950:
    print("당신의 실력 등급은 마스터입니다.")
    
if ur_score >= 1950:
    print("당신의 실력 등급은 그랜드마스터입니다.")

위 코드와 같이 많은 조건이 있는 경우에는 elif(else if)를 사용하여 코드를 다듬어 줄 수 있습니다.

 

ur_score = int(input("현재 점수를 입력하시오 : "))

if ur_score >=0 and ur_score < 75:
    print("당신의 실력 등급은 없습니다.")
elif ur_score >= 75 and ur_score < 150:
    print("당신의 실력 등급은 브론즈입니다.")
elif ur_score >= 150 and ur_score < 300:
    print("당신의 실력 등급은 실버입니다.")
elif ur_score >= 300 and ur_score < 600:
    print("당신의 실력 등급은 골드입니다.")
elif ur_score >= 600 and ur_score < 900:
    print("당신의 실력 등급은 플래티넘입니다.")
elif ur_score >= 900 and ur_score < 1350:
    print("당신의 실력 등급은 다이아몬드입니다.")
elif ur_score >= 1350 and ur_score < 1950:
    print("당신의 실력 등급은 마스터입니다.")
elif ur_score >= 1950:
    print("당신의 실력 등급은 그랜드마스터입니다.")
else:
    print("잘못된 입력값입니다.")

elif를 사용하여 위와 같이 코드를 정리해줄 수 있습니다.

 


 

겉보기에는 if를 그냥 쓰는 게 더 깔끔해 보이는데?

사실 오버워치 경쟁전 코드는 if문 만을 사용해도 코드가 잘 작동합니다. 하지만 elif를 사용하는 이유는 무엇일까요?

  • If문 만 사용해서 900을 입력하여 코드를 실행하면 위의 그림과 같이 900이라는 숫자가 모든 코드에 들어가서 실행(조건이 맞든 안 맞든 관계없이 모든 코드가 실행코드는 위에서부터 아래로 순차적으로 실행)이 됩니다.
  • 현재는 and로 조건을 자세히 맞춰 주었기 때문에 코드가 모두 실행이 돼도 원하는 값만 나오지만 and가 없었던 If Statement(2) 포스팅에서 300이라는 값을 넣으니까 브론즈, 실버, 골드 모든 값이 출력되었었는데 이는 코드가 모두 실행이 된 예라고 볼 수 있습니다.

 

  • elif를 사용하게 되면 코드가 조건이 맞는 값을 찾게 되면 작동을 멈추고 값을 넘겨주게(리턴) 됩니다.
  • 그래서 나머지 아래 3개의 코드는 실행 자체를 안 하게 되는 것이죠!

 

오호라~ 그렇다면 오버워치 경쟁전 코드를 더욱 짧게 만들어 줄 수 있겠구나?

코드는 위에서부터 아래로 실행이 되고 elif를 사용하면 컴퓨터가 조건에 맞는 코드를 찾을 경우 값을 리턴하니까 높은 숫자부터 코드를 작성하면 and 없이 제대로 작동하는 코드로 깔끔하게 만들어줄 수 있게 되는 것이죠!

ur_score = int(input("현재 점수를 입력하시오 : "))

if ur_score >= 1950:
    print("당신의 실력 등급은 그랜드마스터입니다.")
elif ur_score >= 1350:
    print("당신의 실력 등급은 마스터입니다.")
elif ur_score >= 900:
    print("당신의 실력 등급은 다이아몬드입니다.")
elif ur_score >= 600:
    print("당신의 실력 등급은 플래티넘입니다.")
elif ur_score >= 300:
    print("당신의 실력 등급은 골드입니다.")
elif ur_score >= 150:
    print("당신의 실력 등급은 실버입니다.")
elif ur_score >= 75:
    print("당신의 실력 등급은 브론즈입니다.")
elif ur_score >=0:
    print("당신의 실력 등급은 없습니다.")
else:
    print("잘못된 입력값입니다.")

짠! 최종 완성 코드입니다. 훨씬 깔끔해졌습니다.

 

값이 딱 하나만 출력됩니다. 갸굳~~~

 


 

오늘의 느낌

일러스트레이터 배우길 참 잘했다.

'Python' 카테고리의 다른 글

[Python] Growing a List: Append  (0) 2022.01.30
[Python] What is a List?  (0) 2022.01.30
[Python] Else Statements  (0) 2022.01.30
[Python] Boolean Operators  (0) 2022.01.29
[Python] If Statement(2)  (0) 2022.01.29
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함