새소식

반응형
Python/문법

전문가처럼 Python If-Else 문 사용하기

  • -
반응형

Python if-else 문을 사용하여 코드를 최적화하는 몇 가지 팁을 공유하겠습니다.

 

-> 삼항 연산자를 사용하세요

삼항 연산자는 간단한 if-else 문을 한 줄로 작성하는 간단한 방법입니다. 다음과 같은 구문이 있습니다.

result = trueValue if condition else falseValue

이는 다음과 같습니다.

if condition:
    result = trueValue
else:
    result = falseValue

 

삼항 연산자를 사용하면 일부 코드 줄을 절약하고 코드를 더욱 간결하고 우아하게 만들 수 있습니다. 예를 들어, 학생의 점수에 따라 학생에게 성적을 할당한다고 가정해 보겠습니다. 다음과 같이 삼항 연산자를 사용할 수 있습니다.

score = 85
grade = "A" if score >= 80 else "B" if score >= 60 else "C"
print(grade) # A

 

이는 다음과 같이 중첩된 if-else 문을 작성하는 것보다 훨씬 짧고 간단합니다.

score = 85
if score >= 80:
    grade = "A"
elif score >= 60:
    grade = "B"
else:
    grade = "C"
print(grade) # A

 

하지만  삼항 연산자를 과도하게 사용하지 않도록 주의해야 합니다. 조건이 너무 많거나 표현식이 복잡한 경우 코드를 읽기 어렵고 디버깅하기가 더 어려워질 수 있기 때문입니다. 경험상 좋은 규칙은 간단하고 명확한 경우에만 삼항 연산자를 사용하고 더 복잡하고 자세한 경우에는 일반 if-else 문을 사용하는게 더 가독성이 좋을 수 있습니다.

 

 

반응형

 

-> in 연산자를 사용하세요

in 연산자는 list, tuple, string 또는 사전과 같은 시퀀스에 값이 있는지 확인하는 편리한 방법입니다. 다음과 같은 구문이 있습니다.

value in sequence

값이 시퀀스에서 발견되면 True를 반환하고, 그렇지 않으면 False를 반환합니다. in 연산자를 사용하면 if-else 문을 단순화하고 여러 개의 or 조건을 작성하지 않아도 됩니다. 예를 들어, 사용자의 입력이 옵션 목록에서 유효한 선택인지 확인한다고 가정해 보겠습니다. 다음과 같이 in 연산자를 사용할 수 있습니다.

options = ["rock", "paper", "scissors"]
userInput = input("Enter your choice: ")
if userInput.lower() in options:
    print("Valid choice")
else:
    print("Invalid choice")

이는 다음과 같은 여러 조건을 작성하는 것보다 훨씬 쉽고 깔끔합니다.

options = ["rock", "paper", "scissors"]
userInput = input("Enter your choice: ")
# 여러개의 or 조건
if userInput.lower() == "rock" or userInput.lower() == "paper" or userInput.lower() == "scissors":
    print("Valid choice")
else:
    print("Invalid choice")

 

in 연산자를 not 키워드와 함께 사용하여 값이 시퀀스에 없는지 확인할 수도 있습니다. 예를 들어, 사용자의 입력이 유효한 이메일 주소인지 확인한다고 가정해 보겠습니다. 다음과 같이 not in 연산자를 사용할 수 있습니다.

userInput = input("Enter your email: ")
if "@" in userInput and "." in userInput and " " not in userInput:
    print("Valid email")
else:
    print("Invalid email")

이는 다음과 같은 조건들을  여러 개 작성하는 것보다 더 간결하고 직관적입니다.

userInput = input("Enter your email: ")
if userInput.find("@") != -1 and userInput.find(".") != -1 and userInput.find(" ") == -1:
    print("Valid email")
else:
    print("Invalid email")

 

-> 단락 평가(short-circuit evalution)를 사용하세요

단락 평가는 왼쪽에서 오른쪽으로 평가하고 첫번째 결과가 결정되자마자 리턴되는 Python의 기능입니다. 이렇게 하면 시간과 리소스를 절약할 수 있을 뿐만 아니라 일부 오류와 예외도 방지할 수 있습니다. 단락 평가는 다음과 같이 작동합니다.

  • and 표현식의 경우 첫 번째 피연산자가 False이면 전체 표현식이 False이고 두 번째 피연산자는 평가되지 않습니다.
  • or 표현식의 경우 첫 번째 피연산자가 True이면 전체 표현식이 True이고 두 번째 피연산자는 평가되지 않습니다.

단락 평가를 사용하면 if-else 문을 최적화하고 불필요하거나 위험한 계산을 피할 수 있습니다. 예를 들어, 사용자의 입력이 양의 정수인지 확인한다고 가정해 보겠습니다. 다음과 같이 단락 평가를 사용할 수 있습니다.

userInput = input("Enter a positive integer: ")
if userInput.isdigit() and int(userInput) > 0:
    print("Valid input")
else:
    print("Invalid input")

이는 다음과 같이 단일 조건을 작성하는 것보다 더 효율적이고 안전합니다.

userInput = input("Enter a positive integer: ")
if int(userInput) > 0:
    print("Valid input")
else:
    print("Invalid input")

그 이유는 첫 번째 코드 조각이 userInput이 숫자인 경우에만 정수로 변환하려고 시도하기 때문입니다. 이는 빠르고 쉬운 확인입니다. 두 번째 코드 조각은 내용에 관계없이 userInput을 정수로 변환하려고 시도합니다. 이는 속도가 느리고 userInput이 유효한 숫자가 아닌 경우 예외가 발생할 수 있습니다.

 

 

결론

  • 간단하고 명확한 경우에는 삼항 연산자를 사용하세요.
  • 값이 있는지 확인하려면 in 연산자를 사용하세요.
  • 불필요하거나 위험한 계산을 피하기 위해 단락 평가를 사용합니다.
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.