Python에 삼항 조건 연산자가 없으면 다른 언어 구성을 사용하여 시뮬레이션할 수 있습니까?
질문자 :Community Wiki
답변자 : Community Wiki
예, 버전 2.5 에 추가되었습니다. 표현식 구문은 다음과 같습니다.
a if condition else b
첫 번째 condition
이 평가된 다음 조건의 부울 값을 a
또는 b
중 정확히 하나가 평가되고 반환 condition
. condition
이 True
평가되면 a
는 평가되어 반환되지만 b
는 무시됩니다. 그렇지 않으면 b
가 평가되고 반환되지만 a
는 무시됩니다.
때 때문 단락을 허용 condition
단지 사실 a
평가와 b
전혀 평가되지 않습니다,하지만 때 condition
거짓 만 b
평가하고 a
전혀 평가되지 않습니다.
예를 들어:
>>> 'true' if True else 'false' 'true' >>> 'true' if False else 'false' 'false'
조건문은 문 이 아니라 표현식 입니다. 당신이 할당 문을 사용할 수 없거나이 수단 pass
조건식 내에서 다른 문을 나 :
>>> pass if False else x = 3 File "<stdin>", line 1 pass if False else x = 3 ^ SyntaxError: invalid syntax
그러나 조건식을 사용하여 다음과 같이 변수를 할당할 수 있습니다.
x = a if True else b
조건식을 두 값 사이를 전환하는 것으로 생각하십시오. '이러한 값 또는 다른 값' 상황에 있을 때 매우 유용하지만 다른 작업은 별로 하지 않습니다.
문을 사용해야 하는 if
조건식 대신 일반 if 문 을 사용해야 합니다.
몇 가지 이유로 일부 Pythonistas에 의해 눈살을 찌푸리게 한다는 점을 명심하십시오.
- 인수의 순서가 고전적인
condition ? a : b
다른 많은 언어(예: C, C++, Go, Perl, Ruby, Java, Javascript 등)의 삼항 연산자. Python의 "놀라운" 동작에 익숙하지 않은 사람들이 이를 사용할 때 버그가 발생할 수 있습니다. 인수 순서). - 어떤 사람들은 그것이 정상적인 생각의 흐름(조건을 먼저 생각하고 그 다음에 효과를 생각함)과 반대되기 때문에 그것을 "조금 다루기 힘들다"고 생각합니다.
- 문체 이유. ('inline
if
'가 정말 유용하고 스크립트를 더 간결하게 만들 수 있지만 실제로 코드를 복잡하게 만듭니다)
순서를 기억하는 데 문제가 있는 경우 큰 소리로 읽을 때 (거의) 의미하는 바를 말하는 것을 기억하십시오. 예를 들어, x = 4 if b > 8 else 9
x will be 4 if b is greater than 8 otherwise 9
됩니다.
공식 문서:
답변자 : Community Wiki
튜플로 색인을 생성할 수 있습니다.
(falseValue, trueValue)[test]
test
는 True 또는 False 를 반환해야 합니다.
항상 다음과 같이 구현하는 것이 더 안전할 수 있습니다.
(falseValue, trueValue)[test == True]
bool()
을 사용하여 부울 값을 보장할 수 있습니다.
(falseValue, trueValue)[bool(<expression>)]
답변자 : Community Wiki
2.5 이전 버전의 경우 트릭이 있습니다.
[expression] and [on_true] or [on_false]
on_true
에 잘못된 부울 값이 있을 때 잘못된 결과를 줄 수 있습니다. 1
표현식을 왼쪽에서 오른쪽으로 평가하는 이점이 있지만 제 생각에는 이것이 더 명확합니다.
답변자 : Community Wiki
<expression 1> if <condition> else <expression 2>
a = 1 b = 2 1 if a > b else -1 # Output is -1 1 if a > b else -1 if a < b else 0 # Output is -1
답변자 : Community Wiki
문서에서 :
조건식(때때로 "삼항 연산자"라고도 함)은 모든 Python 연산 중 가장 낮은 우선 순위를 갖습니다.
표현식
x if C else y
먼저 조건, C ( x 아님)를 평가합니다. C 가 true이면 x 가 평가되고 해당 값이 반환됩니다. 그렇지 않으면 y 가 평가되고 그 값이 반환됩니다.조건식에 대한 자세한 내용은 PEP 308을 참조하십시오.
버전 2.5 이후의 새로운 기능.
답변자 : Community Wiki
Python의 조건식 연산자는 Python Enhancement Proposal 308의 일부로 2006년에 추가되었습니다. 그 형식은 일반적인 ?:
연산자와 다르며 다음과 같습니다.
<expression1> if <condition> else <expression2>
이는 다음과 같습니다.
if <condition>: <expression1> else: <expression2>
다음은 예입니다.
result = x if a > b else y
사용할 수 있는 또 다른 구문(2.5 이전 버전과 호환):
result = (lambda:y, lambda:x)[a > b]()
피연산자는 느리게 평가 됩니다.
또 다른 방법은 튜플을 인덱싱하는 것입니다(대부분의 다른 언어의 조건부 연산자와 일치하지 않음).
result = (y, x)[a > b]
또는 명시적으로 구성된 사전:
result = {True: x, False: y}[a > b]
또 다른(덜 안정적이지만) 더 간단한 방법은 and
and or
연산자를 사용하는 것입니다.
result = (a > b) and x or y
x
가 False
이면 작동하지 않습니다.
가능한 해결 방법은 다음과 같이 x
및 y
result = ((a > b) and [x] or [y])[0]
또는:
result = ((a > b) and (x,) or (y,))[0]
사전으로 작업하는 경우 삼항 조건을 사용하는 대신 get(key, default)
활용할 수 있습니다. 예를 들면 다음과 같습니다.
shell = os.environ.get('SHELL', "/bin/sh")
답변자 : Community Wiki
불행히도,
(falseValue, trueValue)[test]
솔루션에 단락 동작이 없습니다. 따라서 trueValue
와 falseValue
는 조건에 관계없이 평가됩니다. 이것은 차선책이거나 버그가 있을 수 있습니다(즉, falseValue
trueValue
둘 다 메서드일 수 있고 부작용이 있을 수 있음).
이에 대한 한 가지 해결책은
(lambda: falseValue, lambda: trueValue)[test]()
(승자가 알려질 때까지 실행이 지연됨 ;)) 그러나 호출 가능한 개체와 호출할 수 없는 개체 간에 불일치가 발생합니다. 또한 속성을 사용하는 경우에는 해결되지 않습니다.
그래서 이야기가 진행됩니다. 언급된 3가지 솔루션 중에서 선택하는 것은 단락 기능이 있고, 최소한 Зython 2.5(IMHO는 더 이상 문제가 아님)를 사용하는 것과 "trueValue -evaluates-to-false" trueValue
오류.
답변자 : Community Wiki
다른 프로그래밍 언어의 삼항 연산자
여기에서는 몇 가지 프로그래밍 언어 간의 ternary operator
중요한 차이점을 보여주려고 합니다.
자바스크립트의 삼항 연산자
var a = true ? 1 : 0; # 1 var b = false ? 1 : 0; # 0
Ruby의 삼항 연산자
a = true ? 1 : 0 # 1 b = false ? 1 : 0 # 0
스칼라의 삼항 연산자
val a = true ? 1 | 0 # 1 val b = false ? 1 | 0 # 0
R 프로그래밍의 삼항 연산자
a <- if (TRUE) 1 else 0 # 1 b <- if (FALSE) 1 else 0 # 0
파이썬의 삼항 연산자
a = 1 if True else 0 # 1 b = 1 if False else 0 # 0
답변자 : Community Wiki
Python 2.5 이상에는 특정 구문이 있습니다.
[on_true] if [cond] else [on_false]
이전 Python에서는 삼항 연산자가 구현되지 않았지만 시뮬레이션할 수 있습니다.
cond and on_true or on_false
비록, 경우에 잠재적 인 문제가 cond
로 평가 True
과 on_true
로 평가 False
다음 on_false
대신 반환됩니다 on_true
. 이 동작을 원하면 방법이 OK이고 그렇지 않으면 다음을 사용하십시오.
{True: on_true, False: on_false}[cond is True] # is True, not == True
다음으로 래핑할 수 있습니다.
def q(cond, on_true, on_false) return {True: on_true, False: on_false}[cond is True]
다음과 같이 사용했습니다.
q(cond, on_true, on_false)
모든 Python 버전과 호환됩니다.
답변자 : Community Wiki
당신은 종종 찾을 수 있습니다
cond and on_true or on_false
그러나 이것은 on_true == 0일 때 문제를 일으킵니다.
>>> x = 0 >>> print x == 0 and 0 or 1 1 >>> x = 1 >>> print x == 0 and 0 or 1 1
일반적인 삼항 연산자에 대해 이 결과를 기대할 수 있는 위치
>>> x = 0 >>> print 0 if x == 0 else 1 0 >>> x = 1 >>> print 0 if x == 0 else 1 1
답변자 : Community Wiki
Python에 삼항 조건 연산자가 있습니까?
예. 문법 파일에서 :
test: or_test ['if' or_test 'else' test] | lambdef
관심 부분은 다음과 같습니다.
or_test ['if' or_test 'else' test]
따라서 삼항 조건부 연산은 다음과 같은 형식입니다.
expression1 if expression2 else expression3
expression3
은 느리게 평가됩니다(즉, 부울 컨텍스트에서 expression2
그리고 재귀적 정의 때문에 그것들을 무기한으로 연결할 수 있습니다(비록 나쁜 스타일로 간주될 수 있지만).
expression1 if expression2 else expression3 if expression4 else expression5 # and so on
사용에 대한 참고 사항:
모든 if
else
가 와야 합니다. 목록 이해와 생성기 표현식을 배우는 사람들은 이것이 배우기 어려운 교훈임을 알 수 있습니다. Python은 else에 대한 세 번째 표현식을 기대하기 때문에 다음은 작동하지 않습니다.
[expression1 if expression2 for element in iterable] # ^-- need an else here
SyntaxError: invalid syntax
. 따라서 위의 내용은 불완전한 논리 조각(아마도 사용자는 거짓 조건에서 no-op를 기대함)이거나 expression2를 필터로 사용하려는 의도일 수 있습니다. 다음은 유효한 Python입니다.
[expression1 for element in iterable if expression2]
expression2
는 목록 이해를 위한 필터로 작동하며 삼항 조건부 연산자 가 아닙니다.
보다 좁은 경우에 대한 대체 구문:
다음을 작성하는 것이 다소 고통스러울 수 있습니다.
expression1 if expression1 else expression2
expression1
은 위의 사용법으로 두 번 평가되어야 합니다. 단순히 지역 변수인 경우 중복성을 제한할 수 있습니다. 그러나 이 사용 사례에 대한 일반적이고 성능이 좋은 Pythonic 관용구는 or
의 바로 가기 동작을 사용하는 것입니다.
expression1 or expression2
의미론적으로 동일합니다. 일부 스타일 가이드는 명확성을 이유로 이 사용을 제한할 수 있습니다. 매우 작은 구문에 많은 의미를 담습니다.
답변자 : Community Wiki
파이썬 삼항 연산자 시뮬레이션.
예를 들어
a, b, x, y = 1, 2, 'a greather than b', 'b greater than a' result = (lambda:y, lambda:x)[a > b]()
산출:
'b greater than a'
답변자 : Community Wiki
a if condition else b
기억하기 어려운 경우 이 피라미드를 외우십시오.
condition if else ab
답변자 : Community Wiki
Python의 조건식 에 대한 대안 중 하나
"yes" if boolean else "no"
는 다음과 같습니다.
{True:"yes", False:"no"}[boolean]
다음과 같은 멋진 확장자가 있습니다.
{True:"yes", False:"no", None:"maybe"}[boolean_or_none]
가장 짧은 대안은 다음과 같습니다.
("no", "yes")[boolean]
하지만 대안이 없다.
yes() if boolean else no()
yes()
및 no()
의 평가를 피하려면
(no(), yes())[boolean] # bad
no()
및 yes()
가 모두 평가됩니다.
답변자 : Community Wiki
삼항 조건 연산자를 사용하면 여러 줄의 if-else를 대체하여 한 줄로 조건을 테스트하여 코드를 압축할 수 있습니다.
구문:
[on_true] if [표현식] else [on_false]
1- 삼항 연산자를 사용하는 간단한 방법:
# Program to demonstrate conditional operator a, b = 10, 20 # Copy value of a in min if a < b else copy b min = a if a < b else b print(min) # Output: 10
2- 튜플, 사전 및 람다를 사용하는 직접적인 방법:
# Python program to demonstrate ternary operator a, b = 10, 20 # Use tuple for selecting an item print( (b, a) [a < b] ) # Use Dictionary for selecting an item print({True: a, False: b} [a < b]) # lamda is more efficient than above two methods # because in lambda we are assure that # only one expression will be evaluated unlike in # tuple and Dictionary print((lambda: b, lambda: a)[a < b]()) # in output you should see three 10
3- 삼항 연산자는 중첩된 if-else로 작성할 수 있습니다.
# Python program to demonstrate nested ternary operator a, b = 10, 20 print ("Both a and b are equal" if a == b else "a is greater than b" if a > b else "b is greater than a")
위의 접근 방식은 다음과 같이 작성할 수 있습니다.
# Python program to demonstrate nested ternary operator a, b = 10, 20 if a != b: if a > b: print("a is greater than b") else: print("b is greater than a") else: print("Both a and b are equal") # Output: b is greater than a
답변자 : Community Wiki
당신은 이것을 할 수 있습니다 :-
[condition] and [expression_1] or [expression_2] ;
예시:-
print(number%2 and "odd" or "even")
숫자가 홀수이면 "홀수"를 인쇄하고 짝수이면 "짝수"를 인쇄합니다.
결과:- 조건이 참이면 exp_1이 실행되고 그렇지 않으면 exp_2가 실행됩니다.
참고:- 0 , None , False , emptylist , emptyString 은 False로 평가됩니다. 그리고 0이 아닌 모든 데이터는 True로 평가됩니다.
작동 방식은 다음과 같습니다.
조건 [condition]이 "True"가 되면 expression_1은 평가되지만 expression_2는 평가되지 않습니다. 우리가 0(영)으로 무언가를 "및"하면 결과는 항상 fasle이 됩니다. 따라서 아래 문에서 ,
0 and exp
0이 있는 "and"는 항상 0으로 평가되고 표현식을 평가할 필요가 없기 때문에 표현식 exp는 전혀 평가되지 않습니다. 이것이 컴파일러 자체가 모든 언어에서 작동하는 방식입니다.
에
1 or exp
exp 표현식은 "or"가 항상 1이기 때문에 전혀 평가되지 않습니다. 따라서 결과가 어쨌든 1이 될 것이기 때문에 표현식 exp를 평가하는 데 신경쓰지 않아도 됩니다. (컴파일러 최적화 방법).
하지만 의 경우
True and exp1 or exp2
두 번째 표현식 exp2 는 exp1 이 false 가 아닐 때 True and exp1
마찬가지로
False and exp1 or exp2
False는 0을 쓰는 것과 같기 때문에 표현식 exp1은 평가되지 않으며 "and"를 0으로 수행하는 것은 0 자체가 되지만 "or"가 사용된 이후 exp1 후에는 "or" 뒤에 표현식 exp2를 평가할 것입니다.
참고:- "or" 및 "and"를 사용하는 이러한 종류의 분기는 expression_1이 False(또는 0 또는 None 또는 emptylist [ ] 또는 emptystring ' ')의 Truth 값을 갖지 않는 경우에만 사용할 수 있습니다. False 이면 exp_1과 exp_2 사이에 "or"가 있기 때문에 expression_2가 평가됩니다.
exp_1 및 exp_2 진리값이 무엇인지에 관계없이 모든 경우에 여전히 작동하도록 하려면 다음을 수행하십시오.
[condition] and ([expression_1] or 1) or [expression_2] ;
답변자 : Community Wiki
답변보다 더 많은 팁(100번째 시간 동안 명백한 것을 반복할 필요가 없음), 그러나 나는 때때로 그것을 그러한 구조에서 한 줄의 지름길로 사용합니다:
if conditionX: print('yes') else: print('nah')
, 다음이 됩니다.
print('yes') if conditionX else print('nah')
일부(많은)는 비단결적(심지어, 루비 같은)으로 눈살을 찌푸릴 수 있지만 개인적으로 더 자연스럽습니다. 즉, 일반적으로 표현하는 방법과 큰 코드 블록에서 시각적으로 더 매력적입니다.
답변자 : Community Wiki
이미 대답했듯이 파이썬에는 삼항 연산자가 있습니다.
<expression 1> if <condition> else <expression 2>
추가 정보:
<expression 1>
이 조건이면 Short-Curquit 평가를 사용할 수 있습니다.
a = True b = False # Instead of this: x = a if a else b # You could use Short-cirquit evaluation: x = a or b
추신: 물론 단락 평가는 삼항 연산자가 아니지만 종종 단락이 충분할 경우 삼항이 사용됩니다.
답변자 : Community Wiki
Vinko Vrsalovic의 대답은 충분합니다. 한 가지만 더 있습니다.
조건문은 문 이 아니라 표현식 입니다. 당신이 할당 문을 사용할 수 없거나이 수단
pass
조건식 내에서 다른 문을 나
Python 3.8의 바다코끼리 연산자
그 해마 연산자가 Python 3.8에 도입된 후 변경된 사항이 있습니다.
(a := 3) if True else (b := 5)
a = 3
하고 b is not defined
.
(a := 3) if False else (b := 5)
는 a is not defined
b = 5
c = (a := 3) if False else (b := 5)
c = 5
, a is not defined
b = 5
입니다.
이것이 보기 흉하더라도, 파이썬 3.8 이후 에는 조건식 내에서 할당 을 수행할 수 있습니다. 어쨌든 이 경우에는 if
문을 대신 사용하는 것이 좋습니다.
답변자 : Community Wiki
C
에서 파생된 많은 프로그래밍 언어에는 일반적으로 다음과 같은 삼항 조건 연산자 구문이 있습니다.
<condition> ? <expression1> : <expression2>
먼저,
Python
이 사용되지 사람들을 이해하는 것은 매우 어렵다 이후 B enevolent의 D의 ictator F 또는 L의 IFE는 (비 파이썬 스타일 등)을 거부 (나는 귀도 반 로섬 (Guido van Rossum)은 물론 평균)C
언어입니다. 또한 콜론 기호:
Python
에서 많이 사용됩니다. PEP 308 이 승인된 후Python
마침내 자체 단축키 조건식(지금 사용하는 것)을 받았습니다.
<expression1> if <condition> else <expression2>
따라서 먼저 조건을 평가합니다. True
반환하면 expression1 이 평가되어 결과를 제공하고, 그렇지 않으면 expression2 가 평가됩니다. 지연 평가 메커니즘으로 인해 - 하나의 표현식만 실행됩니다.
다음은 몇 가지 예입니다(조건은 왼쪽에서 오른쪽으로 평가됨).
pressure = 10 print('High' if pressure < 20 else 'Critical') # Result is 'High'
삼항 연산자는 직렬로 연결될 수 있습니다.
pressure = 5 print('Normal' if pressure < 10 else 'High' if pressure < 20 else 'Critical') # Result is 'Normal'
다음은 이전과 동일합니다.
pressure = 5 if pressure < 20: if pressure < 10: print('Normal') else: print('High') else: print('Critical') # Result is 'Normal'
도움이 되었기를 바랍니다.
답변자 : Community Wiki
예, python에는 삼항 연산자가 있습니다. 여기에 동일한 구문과 예제 코드가 있습니다. :)
#[On true] if [expression] else[On false] # if the expression evaluates to true then it will pass On true otherwise On false a= input("Enter the First Number ") b= input("Enter the Second Number ") print("A is Bigger") if a>b else print("B is Bigger")
답변자 : Community Wiki
다른 답변은 Python 삼항 연산자에 대해 올바르게 이야기합니다. 삼항 연산자가 자주 사용되지만 더 나은 관용구가 있는 시나리오를 언급하여 보완하고 싶습니다. 기본값을 사용하는 시나리오입니다.
option_value
가 설정되지 않은 경우 기본값과 함께 사용하려고 한다고 가정합니다.
run_algorithm(option_value if option_value is not None else 10)
또는 option_value
가 잘못된 값( 0
, ""
등)으로 설정되지 않은 경우 간단히
run_algorithm(option_value if option_value else 10)
그러나 이 경우 더 나은 솔루션은 단순히 다음을 작성하는 것입니다.
run_algorithm(option_value or 10)
답변자 : Community Wiki
파이썬에는 할당에 대한 삼항 형식이 있습니다. 그러나 사람들이 알고 있어야 하는 더 짧은 형식이 있을 수도 있습니다.
조건에 따라 하나 또는 다른 값을 변수에 할당해야 하는 것은 매우 일반적입니다.
>>> li1 = None >>> li2 = [1, 2, 3] >>> >>> if li1: ... a = li1 ... else: ... a = li2 ... >>> a [1, 2, 3]
^ 이것은 그러한 과제를 수행하는 긴 형식입니다.
아래는 삼항 형식입니다. 그러나 이것은 가장 간결한 방법이 아닙니다. 마지막 예를 참조하십시오.
>>> a = li1 if li1 else li2 >>> >>> a [1, 2, 3] >>>
Python을 사용하면 or
대체 할당을 위해 간단히 사용할 수 있습니다.
>>> a = li1 or li2 >>> >>> a [1, 2, 3] >>>
위는 li1
이 None
이고 interp가 논리 표현식에서 이를 False로 취급하기 때문에 작동합니다. 그런 다음 interp는 계속 이동하여 None
이 아니고 빈 목록이 아닌 두 번째 표현식을 평가하므로 에 할당됩니다.
이것은 빈 목록에서도 작동합니다. 예를 들어, 당신이 원하는 경우 할당 항목이 중 목록입니다. a
>>> li1 = [] >>> li2 = [1, 2, 3] >>> >>> a = li1 or li2 >>> >>> a [1, 2, 3] >>>
이것을 알면, 당신이 그들을 만날 때마다 당신은 단순히 그러한 할당을 할 수 있습니다. 이것은 문자열 및 기타 이터러블에서도 작동합니다. 당신은 할당 할 수 중 문자열이 비어 있지 않습니다. a
>>> s1 = '' >>> s2 = 'hello world' >>> >>> a = s1 or s2 >>> >>> a 'hello world' >>>
나는 항상 C 삼항 구문을 좋아했지만 Python은 한 걸음 더 나아갔습니다!
나는 이것이 모든 개발자에게 즉시 명백하지 않은 역학에 의존하기 때문에 이것이 좋은 문체 선택이 아니라고 말할 수도 있다는 것을 이해합니다. 나는 개인적으로 그 관점에 동의하지 않는다. Python은 dabler에게 즉시 명백하지 않은 관용적 트릭이 많이 포함된 구문이 풍부한 언어입니다. 그러나 기본 시스템의 역학을 더 많이 배우고 이해할수록 더 많이 감사하게 됩니다.
답변자 : Community Wiki
여러 연산자를 연결하는 깔끔한 방법:
f = lambda x,y: 'greater' if x > y else 'less' if y > x else 'equal' array = [(0,0),(0,1),(1,0),(1,1)] for a in array: x, y = a[0], a[1] print(f(x,y)) # Output is: # equal, # less, # greater, # equal
답변자 : Community Wiki
나는 성가신 기본 파이썬 구문 val = a if cond else b
를 발견하므로 때때로 다음을 수행합니다.
iif = lambda (cond, a, b): a if cond else b # so I can then use it like: val = iif(cond, a, b)
물론 항상 양쪽(a 및 b)을 평가하는 단점이 있지만 구문이 더 명확합니다.
답변자 : Community Wiki
변수가 정의되어 있고 값이 있는지 확인하려면 a or b
def test(myvar=None): # shorter than: print myvar if myvar else "no Input" print myvar or "no Input" test() test([]) test(False) test('hello') test(['Hello']) test(True)
출력합니다
no Input no Input no Input hello ['Hello'] True
답변자 : Community Wiki
is_spacial=True if gender = "Female" else (True if age >= 65 else False)
**
필요에 따라 중첩될 수 있습니다. 행운을 빕니다
**
출처 : Here
출처 : http:www.stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator">
'etc. > StackOverFlow' 카테고리의 다른 글
두 개의 사전을 단일 표현식으로 병합하려면(사전 통합 사용) 어떻게 하나요? (0) | 2021.09.23 |
---|---|
Git을 사용하여 가장 최근 커밋을 새 브랜치로 이동 (0) | 2021.09.23 |
'git pull'과 'git fetch'의 차이점은 무엇입니까? (0) | 2021.09.23 |
다른 웹페이지로 리디렉션하려면 어떻게 합니까? (0) | 2021.09.23 |
JavaScript에서 "엄격한 사용"은 무엇을 하며 그 이유는 무엇입니까? (0) | 2021.09.23 |