스트링에서도 쓸 수 있는 논리 연산자 xor은 어디에 있나요?


발생하는 문제 및 실행환경

스트링 값 2개를 비교해서 하나만 참값(None이나 ""가 아닌 스트링) 일 때 True를 return 해야 하는데

^은 논리 연산자가 아니라 bit연산자인 것 같고, 또 str1 ^ str2같이 스트링에서는 쓸 수가 없습니다. 밑의 소스코드에서 logical_xor()부분을 어떻게 해야 만들 수 있을까요?

소스코드

str1 = raw_input("Enter string one:") #입력
str2 = raw_input("Enter string two:") #입력
if logical_xor(str1, str2): #여기가 만들어야 하는 부분
    print "ok"
else:
    print "bad"
  • 2016년 01월 19일에 작성됨

조회수 239


1 답변


좋아요
0
싫어요
채택취소하기

string xor연산은

  • ""(empty string)이나 None은 bool()에서 False,
  • 그 외의 스트링("abd" 등)은 bool()로 변환했을 때 True

임을 이용합니다.

logic_xor()을 구현하는 방법은 다음과 같습니다.

1. !=을 쓰는 방법

def logical_xor(str1, str2):
    return bool(str1) != bool(str2)

mystr0 = "abcd"
mystr1 = "abc"
mystr2 = ""
mystr3 = None

print logical_xor(mystr0, mystr1) #False
print logical_xor(mystr0, mystr2) #True
print logical_xor(mystr0, mystr3) #True

2. operator모듈의 xor을 쓰는 방법

import operator

def logical_xor(str1, str2):
    return operator.xor(bool(str1), bool(str2))

mystr0 = "abcd"
mystr1 = "abc"
mystr2 = ""
mystr3 = None

print logical_xor(mystr0, mystr1) #False
print logical_xor(mystr0, mystr2) #True
print logical_xor(mystr0, mystr3) #True

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close