인쇄용 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
.
내가 뭘 놓쳤지?
Python에는 후행 기능이 없습니다.if
스테이트먼트.
에는 두 가지 종류가 있습니다.if
Python의 경우:
if
스테이트먼트:if condition: statement if condition: block
if
expression (Python 2.5에서 도입)expression_if_true if condition else expression_if_false
그리고 주의하세요, 둘 다print a
그리고.b = a
스테이트먼트입니다.그뿐a
part는 표현식입니다.그래서 당신이 글을 쓴다면
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 EXPREMION은 항상 else 구를 포함해야 합니다.예:
a = 1 if b else 0
'a' 변수 값을 변경하지 않고 이전 'a' 값을 할당하려면 다음과 같이 하십시오(구문 요구에는 else가 계속 필요합니다).
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 = "")
코드를 구문적으로 올바르게 만들기 위해 필요한 변경은 other뿐입니다.조건식에 다른 변경은 필요합니다('다른 블록의 경우 줄 바꿈).
사용하지 않은 이유None
또는0
스레드 내의 다른 사람들이 사용한 것처럼, 그것은 사용 때문입니다.None/0
이 프로그램의 원인이 되어print None
또는print 0
의 경우b
이False
.
이 토픽에 대해 읽고 싶다면 이 기능이 Python에 추가된 패치의 릴리스 노트에 대한 링크를 포함시켰습니다.
위의 'pattern'은 PEP 308의 패턴과 매우 유사합니다.
이 구문은 이상하고 역순으로 보일 수 있습니다.왜 C의 c? x : y처럼 앞에 있지 않고 표현식의 중간에 있는 것입니까?이 결정은 표준 라이브러리의 모듈에 새로운 구문을 적용하여 그 결과 코드가 어떻게 읽히는지 확인하는 것으로 확인되었습니다.조건식을 사용하는 많은 경우, 한 값은 '일반적인 경우'로 보이며 한 값은 '예외적인 경우'로 간주되며, 조건이 충족되지 않은 드문 경우에만 사용됩니다.조건부 구문을 사용하면 이 패턴이 좀 더 명확해집니다.
contents = (doc + '\n' (doc 이외의 경우)
따라서 전반적으로 이 방법이 합리적인 접근 방식이라고 생각하지만 다음과 같은 단순성에 대해서는 이의를 제기할 수 없습니다.
if logging: print data
이것은 문자열 형식을 사용하여 수행할 수 있습니다.% 표기법 및 .format() 및 f-string(3.6의 새로운 기능)으로 동작합니다.
print '%s' % (a if b else "")
또는
print '{}'.format(a if b else "")
또는
print(f'{a if b else ""}')
2.5부터는 C의 3진수 조건 연산자와 동등한 것을 사용할 수 있습니다.구문은 다음과 같습니다.
[on_true] if [expression] else [on_false]
'예'를 붙이면 요.else
를 들면 다음과 같습니다.
print a if b else ''
다음과 같이 인라인 3진 연산자를 쓸 수 있습니다.
sure = True
# inline operator
is_true = 'yes' if sure else 'no'
# print the outcome
print(is_true)
다음을 사용할 수 있습니다.
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.
고객의 경우는, 다음과 같이 동작합니다.
a = b or 0
편집: 어떻게 작동합니까?
질문에서
b = True
그래서 평가하다
b or 0
을 낳다
True
되어 있다a
.
ifb == False?
,b or 0
는 두 까지 평가됩니다.0
할당되어 있다.a
.
이거 먹어봐.도움이 될 거야
a=100
b=True
if b:
print a
당신은 그저 너무 복잡해요.
if b:
print a
상상 an an 가 필요합니다.else
음음음음음음
a = 1 if b else 0
하지만 더 쉬운 방법은a = int(b)
.
음, 목록 이해로 할 수 있어요.이 방법은 실제 범위를 가진 경우에만 의미가 있습니다.하지만 효과가 있습니다.
print([a for i in range(0,1) if b])
또는 다음 두 변수만 사용합니다.
print([a for a in range(a,a+1) if b])
그럼 이렇게 간단하게 써보는 건 어떨까요?
if b:
print a
else:
print 'b is false'
언급URL : https://stackoverflow.com/questions/11880430/how-to-write-inline-if-statement-for-print
'programing' 카테고리의 다른 글
사전을 JSON으로 변환하는 중 (0) | 2022.10.08 |
---|---|
MariaDB에서 생성된 열 정의의 사용자 정의 함수? (0) | 2022.10.08 |
Python에서 현재 OS를 찾으려면 어떻게 해야 하나요? (0) | 2022.10.08 |
python에서 목록 항목 집합을 구성하는 방법은 무엇입니까? (0) | 2022.10.08 |
클래스 정의의 목록 이해에서 클래스 변수 액세스 (0) | 2022.10.08 |