파이썬 시간관련 질문입니다

조회수 1897회
import time

start_time = time.time() #time.time()-start_time 은 프로그램 총 구동시간입니다
count = 0

while True:

   if A<10 and B<10

        ~~~~~~

   if A>20 and B>20

        break

제가 만든 코드의 대략적인 구조인데요

run file을 하면 그때부터 A와 B의 값은 계속 변합니다.

A<10 and B<10 이 된다고 바로 첫번쨰 if이하 상황이 발생하는게 아니라

A<10 and B<10 의 조건이 3초이상 지속되어야지 if이하 상황이 발생되게 하고싶습니다.

저는 두가지 방법으로 시도해봤는데요

if A<10 and B<10

  temp = time.time() - start.time #조건이 만족된 그 순간의 시간을 임시변수temp에 집어넣음

     if time.time()-start.time-temp>=3#조건만족이후 시간-조건만족순간의 시간이 3이상이면

        ~~~~~~~~~~~~~~ #실행

위 방법은 while문 내에서 time.time()-start.time의 값이 계속바뀌다보니 temp의 값을 고정시킬수없어서 실패했습니다.

두번쨰 방법은

if A>=10 and B>=10 #실행조건이 아니면
     time.time()-start.time=0 #실행시간을 0으로 초기화하고

if A<10 and B<10 #실행조건이면 
     if time.time()-start.time>=3 #그리고 시간이 3초이상 흐르면
         ~~~~~~ #실행

이 방법은 SyntaxError: can't assign to operator.

time.time()-start.time의 값을 어떤 변수에 assign할수있지만 그 반대는 저런 에러가 떴습니다.

지금은 time을 써서 해결할수있는건지도 의심스러운데요 조언 부탁드립니다...

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 프로그램 설명외에 목적하는 것을 적어보세요. 정영훈 2017.12.5 11:28
  • 지금은 상위if문 조건에 부합하는 순간 실행되는데, 조건이 3초동안 유지되야지 if이하 실행문들이 실행되게끔 하고싶습니다 알 수 없는 사용자 2017.12.6 14:00
  • start.time 은 무엇인가요?? 변수들에 대한 정의를 명확하게 해 주셨으면 좋겠습니다. A랑 B도 선언이 안되어 있는데??...;;; dbwodlf3 2017.12.6 19:01

1 답변

  • 조건이 3초 이상 유지되어야 뒷 코드가 실행되게 하고 싶으신거죠? (댓글로 짐작했습니다)

    busy-waiting을 피할 수 없는 것 같은데... 이런 코드는 어떤가요?

    from datetime import datetime
    
    before = datetime.now()
    while(True):
        if A < 10 and B < 10:
            now = datetime.now()
            if (now - before).seconds <= 180: # A < 10 and B < 10 3분간 지속되는지 계속 확인
                continue
        else:
            before = datetime.now() #  A < 10 and B < 10 가 아닌 경우 타임 카운트 초기화
    
        if A > 20 and B > 20:
            pass
            # 어쩌구 저쩌구
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)