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


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월 04일에 작성됨

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


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
        # 어쩌구 저쩌구
  • 2017년 12월 07일에 작성됨
    ლ( ╹ ◡ ╹ ლ) 쭈물

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close