스트링에서도 쓸 수 있는 논리 연산자 xor은 어디에 있나요?
조회수 4258회
발생하는 문제 및 실행환경
스트링 값 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"
1 답변
-
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
댓글 입력