Programing

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

lottogame 2020. 3. 4. 08:04
반응형

인쇄용 인라인 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 ""}')

이 시도 . 도움이 될 수 있습니다

a=100
b=True

if b:
   print a

귀하의 경우이 작동합니다 :

a = b or 0

편집 : 어떻게 작동합니까?

질문에

b = True

그래서 평가

b or 0

결과

True

에 할당되어 a있습니다.

인 경우 b == False?할당 될 b or 0두 번째 피연산자로 평가 0됩니다 a.


당신은 단순히 지나치게 복잡합니다.

if b:
   print a

다음 else과 같은 경우 항상 인라인이 필요합니다 .

a = 1 if b else 0

그러나 더 쉬운 방법은 다음과 같습니다 a = int(b).


글쎄, 왜 간단하게 작성하지 않습니까?

if b:
    print a
else:
    print 'b is false'

흠, 당신은 목록 이해 와 함께 할 수 있습니다 . 실제 범위가있는 경우에만 의미가 있지만 작업을 수행합니다.

print([a for i in range(0,1) if b])

또는 그 두 변수 만 사용하십시오.

print([a for a in range(a,a+1) if b])

참고 URL : https://stackoverflow.com/questions/11880430/how-to-write-inline-if-statement-for-print



반응형