>

파이썬 while 루프를 순전히 한 줄에 가질 수 있습니까? 이것을 시도했습니다 :

while n<1000:if n%3==0 or n%5==0:rn+=n

그러나 다음과 같은 오류 메시지가 나타납니다 : Invalid Syntax   if 에서  성명서


  • 답변 # 1

    파이썬에서 복합 문장을 사용할 때 (스위트, 들여 쓰기 된 블록이 필요한 문장) 그 블록에단순 문장 만이 포함되어 있으면 줄 바꿈을 제거하고 간단한 문장을 세미콜론으로 구분할 수 있습니다 .

    그러나 복합 문장을 지원하지않습니다.

    그래요 :

    if expression: print "something"
    
    

    작동하지만

    while expression: if expression: print "something"
    
    
    둘 다 while 때문에

    하지않아  그리고 if  진술은 복합적입니다.

    특정예에서 if expression: assignment 를 교체 할 수 있습니다.  복잡한 표현 대신 표현식을 사용하여 조건식을 사용합니다.

    while expression: target = true_expression if test_expression else false_expression
    
    

    일반적으로 또는 while n<1000: rn += n if not (n % 3 and n % 5) else 0  구체적으로.

    스타일 관점에서, 당신은 일반적으로 그 한 줄을 그 자체로 남겨두고 싶습니다.

  • 답변 # 2

    예를 들어, 두 레벨의 블록/들여 쓰기를 한 줄로 축소하려고 시도합니다. 허용되지 않습니다. 루프, if 문, 함수 정의 등이 아닌 간단한 명령문으로 만이 작업을 수행 할 수 있습니다. 예를 들어, 삼항 연산자를 사용하는 해결 방법이 있습니다.

    while n < 1000: rn += n if (n % 3 == 0 or n % 5 == 0) else 0
    
    

    '조건이 유지되면 rn을 추가하려면 n을 추가하고 그렇지 않으면 0을 추가하십시오'라고 읽습니다.

  • 답변 # 3

    유사한 일을 수행하는 것이 가능합니다 :

    rn = 100
    for n in range(10): rn += n if (n%3==0 or n%5==0) else 0
    
    

  • 이전 CSV 문자열을 TSQL의 테이블로 변환하는 가장 간결한 방법은 무엇입니까?
  • 다음 php - 심포니 2 - 엔티티를 다른 테이블에 복제