programing

인쇄용 if 스테이트먼트를 인라인으로 쓰는 방법

goodcopy 2022. 10. 8. 23:01
반응형

인쇄용 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 스테이트먼트.

에는 두 가지 종류가 있습니다.ifPython의 경우:

  1. if스테이트먼트:

    if condition: statement
    if condition:
        block
    
  2. if expression (Python 2.5에서 도입)

    expression_if_true if condition else expression_if_false
    

그리고 주의하세요, 둘 다print a그리고.b = a스테이트먼트입니다.그뿐apart는 표현식입니다.그래서 당신이 글을 쓴다면

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의 경우bFalse.

이 토픽에 대해 읽고 싶다면 이 기능이 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부터는 C3진수 조건 연산자와 동등한 것을 사용할 수 있습니다.구문은 다음과 같습니다.

[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

반응형