[python] 인쇄용 인라인 if 문을 작성하는 방법은 무엇입니까?

부울 변수가로 설정된 경우에만 물건을 인쇄해야합니다 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파이썬 에는 두 가지 종류가 있습니다 :

  1. if 성명서:

    if condition: statement
    if condition:
        block
  2. if 표현 (파이썬 2.5에서 도입)

    expression_if_true if condition else expression_if_false

그리고 참고, 그 모두 print ab = 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_functionpython 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 ""}')