부울 변수가로 설정된 경우에만 물건을 인쇄해야합니다 True
. 그래서 이것을 본 후에 간단한 예를 들어 보았습니다.
>>> a = 100
>>> b = True
>>> print a if b
File "<stdin>", line 1
print a if b
^
SyntaxError: invalid syntax
내가 쓰는 경우에도 마찬가지입니다 print a if b==True
.
내가 여기서 무엇을 놓치고 있습니까?
답변
파이썬에는 후행 문장 이 없습니다 .if
if
파이썬 에는 두 가지 종류가 있습니다 :
-
if
성명서:if condition: statement if condition: block
-
if
표현 (파이썬 2.5에서 도입)expression_if_true if condition else expression_if_false
그리고 참고, 그 모두 print a
와 b = a
문입니다. a
부분 만 표현입니다. 그래서 당신이 쓰는 경우
print a if b else 0
그 뜻은
print (a if b else 0)
당신이 쓸 때와 마찬가지로
x = a if b else 0
그 뜻은
x = (a if b else 0)
이제 else
절이 없다면 무엇을 인쇄 / 할당 합니까? 인쇄 / 할당이 여전히 있습니다 .
그리고 거기에 있기를 원하지 않으면 if
읽기가 어렵고 두 줄 변형을 피할 이유가 없지만 항상 한 줄에 일반 명령문을 작성할 수 있습니다 .
답변
인라인 if-else EXPRESSION 은 항상 else 절을 포함해야합니다. 예 :
a = 1 if b else 0
‘a’변수 값을 변경하지 않고 그대로 유지하려면 이전 ‘a’값을 가정하십시오 (구문 요구에 따라 여전히 필요함).
a = 1 if b else a
이 코드 는 b가 False로 바뀌면 변경되지 않은 상태로 둡니다 .
답변
‘else’진술은 필수입니다. 당신은 이런 것들을 할 수 있습니다 :
>>> b = True
>>> a = 1 if b else None
>>> a
1
>>> b = False
>>> a = 1 if b else None
>>> a
>>>
편집하다:
또는 필요에 따라 다음을 시도 할 수 있습니다.
>>> if b: print(a)
답변
원하지 않는 경우 다음을 수행 from __future__ import print_function
할 수 있습니다.
a = 100
b = True
print a if b else "", # Note the comma!
print "see no new line"
어떤 지문 :
100 see no new line
from __future__ import print_function
python 3 이상을 사용 하지 않거나 사용 하지 않는 경우 :
from __future__ import print_function
a = False
b = 100
print(b if a else "", end = "")
else를 추가하는 것은 구문 상으로 코드를 올바르게 작성하기 위해 변경해야하는 유일한 변경 사항입니다. 조건부 표현식에 대해 else가 필요합니다 ( “in else if blocks”).
내가 스레드에서 다른 사람들을 사용하지 않았 None
거나 좋아하지 않는 이유 0
는 사용 None/0
하면 프로그램이 print None
또는 print 0
경우에 있기 때문 b
입니다 False
.
이 주제에 대해 읽으려면 이 기능이 Python에 추가 된 패치의 릴리스 정보에 대한 링크 를 포함 시켰습니다 .
위의 ‘패턴’은 PEP 308에 표시된 패턴과 매우 유사합니다.
이 문법은 이상하고 거꾸로 보일 수도 있습니다. 조건이 C의 c에서와 같이 앞이 아닌 표현식의 중간에 왜 있습니까? x : y? 새로운 구문을 표준 라이브러리의 모듈에 적용하고 결과 코드를 읽는 방법을 확인하여 결정을 확인했습니다. 조건식이 사용되는 많은 경우에, 하나의 값은 ‘일반적인 경우’인 것처럼 보이고 하나의 값은 ‘예외적 인 경우’이며, 조건이 충족되지 않는 경우에만 사용됩니다. 조건부 구문은이 패턴을 좀 더 분명하게 만듭니다.
내용 = ((doc + ‘\ n’) doc else ”)
따라서 전반적으로 이것이 합리적인 접근 방법이라고 생각하지만 다음과 같은 단순성으로 논쟁 할 수는 없습니다.
if logging: print data
답변
2.5 이후 로 C의”? :” 삼항 조건 연산자 에 해당하는 구문을 사용할 수 있으며 구문은 다음과 같습니다.
[on_true] if [expression] else [on_false]
따라서 예제는 훌륭하지만 다음 else
과 같이 간단히 추가해야합니다 .
print a if b else ''
답변
당신이 사용할 수있는:
print (1==2 and "only if condition true" or "in case condition is false")
마찬가지로 다음과 같이 계속 진행할 수 있습니다.
print 1==2 and "aa" or ((2==3) and "bb" or "cc")
실제 예 :
>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
1 item found.
>>> count = 2
>>> print "%d item%s found." % (count, (count>1 and 's' or ''))
2 items found.
답변
문자열 형식 으로 수행 할 수 있습니다 . % 표기법뿐만 아니라 .format () 및 f-strings (3.6에 새로 추가 ) 와 함께 작동합니다.
print '%s' % (a if b else "")
또는
print '{}'.format(a if b else "")
또는
print(f'{a if b else ""}')