programing

"도..."가 있습니까?파이썬에서 "까지"?

lovejava 2023. 6. 8. 19:06

"도..."가 있습니까?파이썬에서 "까지"?

있습니까?

do until x:
    ...

파이썬에서, 또는 그러한 루프 구조를 구현하는 좋은 방법?

Python에는 do-while 루프가 없습니다.

위의 링크에서 가져온 유사한 구조입니다.

 while True:
     do_something()
     if condition():
        break

저는 루프 변수를 사용하는 것을 선호합니다. 단순히 "while 1:"보다 조금 더 좋게 읽는 경향이 있고 못생기지 않습니다.break문:

finished = False
while not finished:
    ... do something...
    finished = evaluate_end_condition()

사전 패키지화된 "do-while"은 없지만 고유한 루프 구조를 구현하는 일반적인 Python 방법은 생성기와 다른 반복기를 통해 수행됩니다.

import itertools

def dowhile(predicate):
  it = itertools.repeat(None)
  for _ in it:
    yield
    if not predicate(): break

예를 들어 다음과 같습니다.

i=7; j=3
for _ in dowhile(lambda: i<j):
  print i, j
  i+=1; j-=1

시작할 때 술어가 이미 거짓임에도 불구하고 원하는 대로 하나의 다리를 실행합니다.

일반적으로 루프 로직을 생성기(또는 다른 반복기)에 더 많이 캡슐화하는 것이 좋습니다. 예를 들어, 변수 하나가 증가하고 하나가 감소하는 경우, 변수를 비교하는 동안 실행/실행 루프가 필요한 경우 다음을 코드화할 수 있습니다.

def incandec(i, j, delta=1):
  while True:
    yield i, j
    if j <= i: break
    i+=delta; j-=delta

다음과 같이 사용할 수 있습니다.

for i, j in incandec(i=7, j=3):
  print i, j

생성기(또는 다른 반복기) 내부에 얼마나 많은 루프 관련 논리를 넣을지, 그리고 생성기 밖에 얼마나 많이 넣을지(주 실행 스트림에서 코드를 리팩터링하는 데 사용할 수 있는 다른 함수, 클래스 또는 기타 메커니즘과 마찬가지로)는 사용자에게 달려 있지만, 일반적으로 말해서, 저는 생성기가 사용되는 것을 보고 싶습니다.for루프 제어 로직이 거의 없는 루프(다음 루프 레그에 대한 상태 변수 업데이트 및/또는 다시 루프해야 하는지 여부에 대한 테스트와 관련된 코드).

아니요, 없어요.대신 a를 사용합니다.while다음과 같은 루프:

while 1:
 ...statements...
  if cond:
    break

언급URL : https://stackoverflow.com/questions/1662161/is-there-a-do-until-in-python