좋은 강의 감사합니다. 질문 하나 드리고자 합니다 p.184쪽 손코딩 부분 중 이해가 안 가는 부분이 있습니다. target_tick이 time.time()보다 클 경우까지 number에다가 1을 더하고 {}부분에 1씩 더해진 마지막 number값을 넣으면 최종 결과는 6이 아닌가요? ex)(처음 시작시간)=111 (target_tick)=111+5 1번반복 - 111
"1초에 한 번만 실행해라"라는 제약을 따로 걸지 않았으므로 프로그램은 해당 부분을 그냥 미친듯이 계속 실행합니다! 참고적으로 현재 파이썬 강의는 개정판 강의가 진행 중입니다. 개정 이전판 강의보다 2배 정도 양을 늘려 자세하게 설명하고 있으므로 그쪽을 참고해주세요![개정판 강의가 곧 완강되면 개정 이전판 강의는 비공개 처리할 예정입니다!]
"1 + 5 > 1"은 항상 왼쪽이 큰 것처럼 "처음 + 5 > 처음"은 항상 왼쪽이 커서 항상 True이므로 while 반복문을 벗어나지 못합니다. . time.time()은 실행할 때마다 시간을 가져오므로, 시간이 지나다보면 조건식이 False가 되어 while 반복문을 탈출합니다.
일단 변수에 한번 저장한 숫자 값은 할당을 추가로 하지 않는 이상 바뀌지 않습니다. 따라서 그냥 고정됩니다. time.time()은 새로운 시간을 구하는 함수이므로, 계속해서 바뀝니다. 반복 횟수는 반복이 몇 번 도는지를 의미합니다. 현재 코드처럼 시간을 기반으로 반복할 때는 몇 번 돌지 알 수 없습니다. 컴퓨터의 역량만큼 반복합니다. PS. 다만 컴퓨터의 성능과 완전히 비례하지는 않습니다. 이후에 운영체제 등을 배우면, 라운드 로빈 등을 배우면서 배우게 되는데 간단하게 컴퓨터가 1초에 10만번 연산할 수 있다고 해도, "10만번의 연산"을 실행되고 있는 모든 프로그램에 분산해서 처리합니다. 30번은 A프로그램, 50번은 B프로그램, 20번은 C프로그램을 연산하는 형태로 매우 빠른 속도로 돌리면서 처리하므로, 현재 컴퓨터에 실행되고 있는 프로그램이 많다면, 값이 작게 나올 수도 있습니다.
안녕하세요 선생님 해당강의와는 상관없지만 질문하나 가능할까요? 제가 평소 선생님 강의보면서 만든 코드들, 제가 인터넷에서 보고 작성해본 코드들을 따로 폴더에 보관을 해두는데 오늘 그 폴더를 바꾸었습니다. 기존에 C:\Users\imfo3\OneDrive\바탕 화면\Solo Coding 폴더에서 현재 C:\Users\imfo3\OneDrive\바탕 화면\Solo Coding\Python\Codes 하위 폴더 두개를 만들어서 그 안에 넣어뒀는데 그때부터 해당 코드들을 실행하려 하면 C:\Users\imfo3\AppData\Local\Programs\Python\Python39\python.exe: can't open file 'C:\Users\imfo3\OneDrive\Ù░öÝâò ÝÖöÙ®┤\Solo Coding sp.py': [Errno 2] No such file or directory 와 같은 에러코드가 뜹니다 인터넷에 찾아보고 해도 정확한 해결방법이 없어서 어떻게 해결을 해야하는지 여쭤보고 싶습니다 위 에러코드에 "바탕화면" 한글이 깨져 나오는데 이게 영향이 있는걸까요? 있다면 어떻게 해결이 될까요?
코드를 실행하고 몇초 뒤에 입력한 값이 print되는 게 너무 신기했던 것 같아요! 근데 옛날에 while 반복문을 만들때 항상 어떤 값을 False로 지정하고 while 반복문을 만들고 다시 True로 지정했었던 걸로 기억하는데 이번에 배운 내용은 훨씬 간단하고 쉬워서 좋아요!
복습하던즁 1초간격마다 출력과 빈칸출력을 하는프로그램에 궁금증을 가지게되었습니다 대충 생각은해봤는데 잘 모르겠네욥 ㅠㅠㅠ import time 처음=time.time() while True if 처음[-1] in [1,3,5,7,9]: print("이름,취미,고향") 처음+=1 else 처음[-1] in [2,4,6,7,8]: print() 처음+=1
앗 일단 현재 코드의 처음은 그냥 숫자를 지정한 것 뿐이고 내부적으로 어떤 시간 변화도 주지 않으므로, 시간 정지로 작동하지 않습니다. 파이썬에서는 time.sleep()이라는 함수가 있는데, 이 함수에 time.sleep(1)처럼 1을 넣으면 1초 정지합니다. 이걸로 구현해보시는 것을 추천합니다.
늘 좋은 강의 감사드리며, 질문이 한가지 있습니다. 말씀하신대로 5초 뒤에 출력하는 while 반복문을 아래처럼 실행해 보니, 소수 셋째자리에서 부터 차이가 발생하더군요. 어느 정도의 차이는 발생하는 것이 맞는지요? 맞다면 항상 1/1000초(혹은 1/10000 등..)의 오류를 포함하는 것인가요? import time 처음 = time.time() while 처음 + 5 > time.time(): pass print(time.time()) print("프로그램이 종료되었습니다.") >>1578699292.5564358 >>1578699297.5580597
컴퓨터 내부에는 거의 정확한 시계가 있어서, 시간을 구하는 것은 거의 완벽하게 할 수 있지만, 이 시간을 가져오는 과정에서 다음과 같은 딜레이가 발생해서 그렇습니다. (간단하게 1코어의 경우로 설명을 하면), 컴퓨터의 연산 처리 장치라고 할 수 있는 CPU는 내부적으로 한 번에 한 가지 일 밖에 못합니다. 하지만 프로그램들을 많이 돌려야 하므로(운영체제와 운영체제가 제공하는 백그라운드 프로그램 포함), 매우 빠른 속도로 A프로그램 처리하고, B프로그램 처리하고, C프로그램 처리하고, ..., 다시 A프로그램 처리하고, B프로그램 처리하고, .... 등의 형태로 돌리면서 처리를 하게 됩니다. 컴퓨터가 한 프로그램만 죽치고 돌리면서 처리한다면, 시간 오차가 거의 발생하지 않겠지만, 이와 같은 처리 변경으로 인해서 1/1000~1/10000초 정도의 오차는 포함하게 됩니다...!
또 질문이 생겼어요^^; 4장 2번문제에서 key_list=["name", "hp", "mp", "level"] value_list=["기사", 200, 30, 5] character={} for i in range(len(key_list)): character[key_list[i]]=value_list[i] print(character) 에서 for문을 돌때 그 다음줄까지만 유효한 반복문인가요? 결과가 한줄로 쭉 출력되는걸 봐서 chararcter[key_list[i]]=value_list가 반복이 되고 최종적으로 print가 실행되는데 반복문을 돌때마다 print 함수가 출력되도록 하는 문법이 따로 있는지요?
책 184페이지의 5초동안 카운트되는 숫자확인하는 예제 내용이 개념적으로 이해가안되는데 5초동안 카운트된 숫자 (책에서)14223967은 시간인가요? 무얼 기준으로 짧은시간동안 억단위의 숫자가 올라가는지요 그리고 컴퓨터의 성능과 상황에 따라 반복횟수가 달라진다고 했는데 그럼 카운트되는 객관적인 기준이 없는 숫자란 얘기인데 이 숫자는 무슨 숫자인가요?
만약 시간이 계속 흘러가는 걸 보여주면서 5초 뒤, 프린트로 "프로그램이 종료되었습니다."를 출력하고싶으면 어떻게 해야할까요? import time 처음 = time.time() while 처음 + 5 >= time.time(): print("현재 시각은 {}입니다.".format(처음)) print("프로그램이 종료되었습니다.") 이렇게 하고 코딩을 진행하니깐 돌리는 시점의 시간으로만 동일하게 출력되다가 5초 뒤 "프로그램이 종료되었습니다."라고 뜨네요
import time 처음 = time.time() while 처음 + 5 >= time.time(): print("현재 시각은 {}입니다.".format(time.time())) print("프로그램이 종료되었습니다.") 이렇게 format 뒤에 처음이 아닌 time.time() 으로 바꾸니깐 제가 원하는 대로 됐어요. 이유가 뭘까요 ㅠㅠ
교재 184쪽의 예시 같은 경우 import time number = 0 target_tick = time.time() + 5 while time.time() < target_tick : number+=1 print("5초동안 {}번 반복했습니다.".format(number)) 이것 역시 제 질문과 같은 예시같네용 ㅜㅜㅜ 여기서 while 반복문을 돌릴 때마다 time.time() < target_tick : 의 time.time() 과 target_tick 속 time.time()은 같이 증가하는 게 아닌가용?? 너무 귀찮게 해서 죄송합니다
import time 시작시간 = time.time() while 시작시간 + 61 > 시작시간: pass print("대기시간이 초과되었습니다.") time.time() 말고 시작시간이라 입력하면 기다려도 "대기시간~"이 문장이 출력되지 않는데 이건 왜 그런가요??? 시작시간 = time.time()이면 뭘 써도 둘이 같은 거 아닌가요???
안녕하세요 질문있습니다! 특정시간동안 프로그램을 정지시킬때 while 옆에 부등식을 쓰잖아요? 그런데 부등식 왼편과 오른편에 있는 time.time()이 똑같으니까, 함께 커져서 time.time() + 5 > time.time() 은 항상 True가 되어서 프로그램이 안끝날 것이라고 생각했는데, 저렇게 하면 프로그램이 5초뒤에 종료되니까... 제가 어느 부분을 잘 못 생각하고 있는 하세요 질문있습니다! 특정시간동안 프로그램을 정지시킬때 while 옆에 부등식을 쓰잖아요? 그런데 부등식 왼편과 오른편에 있는 time.time()이 똑같으니까, 함께 커져서 time.time() + 5 > time.time() 은 항상 True가 되어서 프로그램이 안끝날 것이라고 생각했는데, 저렇게 하면 프로그램이 5초뒤에 종료되니까... 제가 어느 부분을 잘 못 생각하고 있는 것인지 궁금합니다. 감사합니다.
안녕하세요, 선생님. 강의에서 5초 대기 후 프린트 되는 코드를 보고 왜 제가 작성한 코드는 실행이 안되는지 모르겠습니다...무엇이 잘못된 걸까요...? import time 처음 = time.time() while 처음 + 5 < time.time(): print("프로그램이 종료되었습니다.")
@@윤인성 이해가 잘 되지 않는 점은 강의에서 처음 = time.time() while 처음 + 5 >= time.time(): 위 구문처럼 코딩했기 때문에 처음 = time.time() 이렇게 변수로 지정이 되어 있어 답변하신 내용과 같은건 아닌가요..? 다르니까 다르게 작동하겠죠? ㅠㅠ
time.time()은 실행되는 시점의 시간을 구합니다. 반복문을 계속 돌면서 조건을 확인하는 부분을 실행할 때마다(while 처음 + 5 >= time.time() 부분) time.time()이 실행되므로, 실행될 때마다 계속 최신 시간을 구합니다. 따라서 미리 저장해두는 코드와 다르게 작동합니다! - 처음 + 5 # 얘는 계속 고정되지만 - time.time() # 얘는 계속 시간이 지나면서 증가하므로 차이가 5보다 커질 때 반복문을 나가는 것입니다. - 처음 + 5 >= 처음 은 그냥 계속 처음 그대로 값이니까 변화가 없습니다!
안녕하세요 공부하다가 질문이 있어서 질문드립니다.!! 181page의 infinite_loop.py의 예제에서 "기본적으로 end가 ' '이라 줄바꿈이 일어나는데" 라고 말씀하셨습니다. print()함수의 자동 완성 기능을 보면 def print(value .... end=' ')라고 확인을 할 수 있습니다.!!!! 그리고 경험에 비추어 보았을 때에도 우리가 어떤 것을 print()으로 찍어내면 항상 줄바꿈이 일어났습니다. 따라서 질문1) 원래 우리가 print()이렇게 사용하지만 사실은 print(,end) 즉 ,end가 생략이 된거 아닌가요 그래야지만 end=' '이 들어가서 줄바꿈이 일어나지 않을까요?? 질문 2) 혹시 end 하고 ' '의 차이점은 무엇인가요???
end는 이후에 나오게 되는 키워드매개변수니자 기본매개변수입니다. 이무 것도 매개 변수에 안 넣으면 줄바꿈이 들어간다는 의미입니다. print(-----, end='_') 등으로 실행해보시면 end라는 매개 변수가 무엇을 하는 녀석인지 쉽게 이해하실 수 있을 것이라 생각합니다.
Thanks
좋은 강의 감사합니다. 질문 하나 드리고자 합니다
p.184쪽 손코딩 부분 중 이해가 안 가는 부분이 있습니다.
target_tick이 time.time()보다 클 경우까지 number에다가 1을 더하고 {}부분에
1씩 더해진 마지막 number값을 넣으면 최종 결과는 6이 아닌가요?
ex)(처음 시작시간)=111 (target_tick)=111+5
1번반복 - 111
"1초에 한 번만 실행해라"라는 제약을 따로 걸지 않았으므로
프로그램은 해당 부분을 그냥 미친듯이 계속 실행합니다!
참고적으로 현재 파이썬 강의는 개정판 강의가 진행 중입니다.
개정 이전판 강의보다 2배 정도 양을 늘려 자세하게 설명하고 있으므로
그쪽을 참고해주세요![개정판 강의가 곧 완강되면 개정 이전판 강의는 비공개 처리할 예정입니다!]
답변 감사합니다 공부에 참고하도록 하겠습니다
안녕하세요! 오늘도 강의 잘 봤습니다 :)
질문이 있는데 p.184 손코딩에 10번째에 number += 1이 왜 쓰인건지 이유가 궁금합니다...!
다른분들 댓글에 달린 답변을 봐도 이해 잘 안됩니다 ㅜㅠ
감사합니다!
"어떻게 해야 했을 것 같은데 어떻게 해서 이상하다"를 조금 더 자세히 알려주실 수 있을까요! 추가적으로 혼자 공부하는 파이썬 강의는 현재 개정판 강의가 90개 정도 업로드 되어 있는데 훨씬 자세하므로, 개정판 강의를 보시는걸 추천드립니다!
@@minseonnnnn. 넵 강의가 내용이 더 빵빵해서, 강의만 보셔도됩니다!
똑똑해
좋은 강의 해주시는 데 감사하고 질문드립니다.
while 처음 + 5 > time.time():
선생님 여기서요.
while 처음 + 5 > 처음
으로 하면 안되는건가요? 해봤는데 아무 반응이 없길래 뭔가 반복하는 것 같아서 ctrl + c 로 껏어요.
"1 + 5 > 1"은 항상 왼쪽이 큰 것처럼
"처음 + 5 > 처음"은 항상 왼쪽이 커서 항상 True이므로 while 반복문을 벗어나지 못합니다.
.
time.time()은 실행할 때마다 시간을 가져오므로, 시간이 지나다보면 조건식이 False가 되어 while 반복문을 탈출합니다.
@@윤인성 아.. 제가 너무 피상적으로 이해한 거군요. 빠른 답변 감사합니다
감사합니다
어쨌거나 출첵~
쌤 184쪽 손코딩 질문요 8번째줄에 타겟틱은 현재시간에서 5초를 더한값이라했는데 그럼 딱 고정된값인가요? 예를들어 현재시간이 1이면 타겟틱은 6으로 고정되는지 아니면 현재시간이 1,2,3,4,5....으로 변하면서 타겟틱도 1+5,2+5....이런식으로 변하는지 궁금합니다. 9번째줄 while반복문을 보니 고정된거같긴한데.. 9번째줄 time.time()이거는 계속 변하는거죠? 그래야 5초있으면 time.time()이 고정된 타켓틱을 따라잡아서 while에서 빠져나오는거니.. 제가 이해한게 맞나요?
그리고 반복횟수는 뭔가요? 5초동안에 얼만큼 while를 반복하는지는 정확하게 알수없고 오로지 컴퓨터 역량인가요? 그러니까.. 현재시간이 타임틱보다 작으면 넘버가 1증가하고 또 작으면 1증가하고 5초동안 증가된 값이 넘버인지 궁금해요
일단 변수에 한번 저장한 숫자 값은 할당을 추가로 하지 않는 이상 바뀌지 않습니다. 따라서 그냥 고정됩니다. time.time()은 새로운 시간을 구하는 함수이므로, 계속해서 바뀝니다.
반복 횟수는 반복이 몇 번 도는지를 의미합니다.
현재 코드처럼 시간을 기반으로 반복할 때는 몇 번 돌지 알 수 없습니다.
컴퓨터의 역량만큼 반복합니다.
PS. 다만 컴퓨터의 성능과 완전히 비례하지는 않습니다.
이후에 운영체제 등을 배우면, 라운드 로빈 등을 배우면서 배우게 되는데
간단하게 컴퓨터가 1초에 10만번 연산할 수 있다고 해도,
"10만번의 연산"을 실행되고 있는 모든 프로그램에 분산해서 처리합니다.
30번은 A프로그램, 50번은 B프로그램, 20번은 C프로그램을 연산하는 형태로 매우 빠른 속도로 돌리면서 처리하므로, 현재 컴퓨터에 실행되고 있는 프로그램이 많다면, 값이 작게 나올 수도 있습니다.
혹시 datetime을 계속 업데이트하는 명령어좀 알려줄수있나요??
책117쪽 시간을 계속해서 while로 반복하는데 뜨는 시간이 계속똑같이뜨네요........
확인하고 시점마다 datetime.datetime.now()를 사용해주셔야 합니다.
이걸 호출하는 시점에 시간이 구해지는 것이라서
이걸 변수에 저장하고 변수를 출력한다면
계속 같은 시간이 나옵니다.
안녕하세요 선생님 해당강의와는 상관없지만 질문하나 가능할까요?
제가 평소 선생님 강의보면서 만든 코드들, 제가 인터넷에서 보고 작성해본 코드들을 따로 폴더에 보관을 해두는데 오늘 그 폴더를 바꾸었습니다. 기존에
C:\Users\imfo3\OneDrive\바탕 화면\Solo Coding
폴더에서 현재
C:\Users\imfo3\OneDrive\바탕 화면\Solo Coding\Python\Codes
하위 폴더 두개를 만들어서 그 안에 넣어뒀는데 그때부터 해당 코드들을 실행하려 하면
C:\Users\imfo3\AppData\Local\Programs\Python\Python39\python.exe: can't open file 'C:\Users\imfo3\OneDrive\Ù░öÝâò ÝÖöÙ®┤\Solo Coding
sp.py': [Errno 2] No such file or directory
와 같은 에러코드가 뜹니다 인터넷에 찾아보고 해도 정확한 해결방법이 없어서 어떻게 해결을 해야하는지 여쭤보고 싶습니다
위 에러코드에 "바탕화면" 한글이 깨져 나오는데 이게 영향이 있는걸까요? 있다면 어떻게 해결이 될까요?
넵 영향이 존재합니다. 한글 경로 때문인데, 그래서 일반적으로 경로 위에 한글이 없게 구성합니다! 한글이 아닌 이름에 폴더에 저장해보시는 것을 추천드립니다!
@@윤인성 감사합니다! 잘 해결되었습니다
import time
number=0
target_tick=time.time()+5
while time.time() < target_tick:
number+=1
print("5초동안 {}번 반복합니다".format(number))
c.f -> (이전에 구한 시간 + 5초) > (현재 시간[계속해서 구함])을 계속 비교하므로, 현재 시간이 앞의 것을 넘을 때 반복문을 벗어나게 됩니다..!
Q. 값이 5초동안 34605685번 반복이라고 나오면
현재시간이 (이전에 구한 시간+5초)를 "5초동안 34605685번 반복"에서 34605685째에 넘는다는 소리인가요??
넵 그렇습니다!
import time as t
t.sleep(5)
도 가능 한데 굳이 while 문을 사용해야 할까요?
사용해야한다면 왜 사용해야되는지 적어 주시면 감사하겠습니다.
while 반복문을 공부해본다는 목적일 뿐입니다!
또는 이후에 네트워크 처리 등을 할 때 이런 코드를 작성하고, 5초 동안 커넥션을 계속 시도[while로 5초 동안 계속 리트라이] 해보다가 안되면 탈출하는 코드를 작성해볼 수 있습니다!
@@윤인성 그렇군요. 감사합니다.😀
코드를 실행하고 몇초 뒤에 입력한 값이 print되는 게 너무 신기했던 것 같아요! 근데 옛날에 while 반복문을 만들때
항상 어떤 값을 False로 지정하고 while 반복문을 만들고 다시 True로 지정했었던 걸로 기억하는데 이번에 배운 내용은 훨씬 간단하고 쉬워서 좋아요!
복습하던즁 1초간격마다 출력과 빈칸출력을 하는프로그램에 궁금증을 가지게되었습니다 대충 생각은해봤는데 잘 모르겠네욥 ㅠㅠㅠ
import time
처음=time.time()
while True
if 처음[-1] in [1,3,5,7,9]:
print("이름,취미,고향")
처음+=1
else 처음[-1] in [2,4,6,7,8]:
print()
처음+=1
앗 일단 현재 코드의 처음은 그냥 숫자를 지정한 것 뿐이고 내부적으로 어떤 시간 변화도 주지 않으므로, 시간 정지로 작동하지 않습니다. 파이썬에서는 time.sleep()이라는 함수가 있는데, 이 함수에 time.sleep(1)처럼 1을 넣으면 1초 정지합니다. 이걸로 구현해보시는 것을 추천합니다.
항상 친절하고
자세한 설명의 강의 감사드립니다
오늘 강의도 감사합니다. ^^
늘 좋은 강의 감사드리며, 질문이 한가지 있습니다.
말씀하신대로 5초 뒤에 출력하는 while 반복문을 아래처럼 실행해 보니, 소수 셋째자리에서 부터 차이가 발생하더군요.
어느 정도의 차이는 발생하는 것이 맞는지요? 맞다면 항상 1/1000초(혹은 1/10000 등..)의 오류를 포함하는 것인가요?
import time
처음 = time.time()
while 처음 + 5 > time.time():
pass
print(time.time())
print("프로그램이 종료되었습니다.")
>>1578699292.5564358
>>1578699297.5580597
컴퓨터 내부에는 거의 정확한 시계가 있어서, 시간을 구하는 것은 거의 완벽하게 할 수 있지만, 이 시간을 가져오는 과정에서 다음과 같은 딜레이가 발생해서 그렇습니다.
(간단하게 1코어의 경우로 설명을 하면), 컴퓨터의 연산 처리 장치라고 할 수 있는 CPU는 내부적으로 한 번에 한 가지 일 밖에 못합니다. 하지만 프로그램들을 많이 돌려야 하므로(운영체제와 운영체제가 제공하는 백그라운드 프로그램 포함), 매우 빠른 속도로 A프로그램 처리하고, B프로그램 처리하고, C프로그램 처리하고, ..., 다시 A프로그램 처리하고, B프로그램 처리하고, .... 등의 형태로 돌리면서 처리를 하게 됩니다. 컴퓨터가 한 프로그램만 죽치고 돌리면서 처리한다면, 시간 오차가 거의 발생하지 않겠지만, 이와 같은 처리 변경으로 인해서 1/1000~1/10000초 정도의 오차는 포함하게 됩니다...!
@@윤인성 이렇게 심오한 내용이 있었군요. 답글 감사 드립니다. ^^;
조건문을 사용하여 입력 받은 수가 0이면 입력을 멈추는 프로그램을 작성하고 싶은데 어떻게 해야 하나요?ㅠㅠ
if 조건문으로 0일 때 → break 사용해주시면 됩니다!
또 질문이 생겼어요^^; 4장 2번문제에서
key_list=["name", "hp", "mp", "level"]
value_list=["기사", 200, 30, 5]
character={}
for i in range(len(key_list)):
character[key_list[i]]=value_list[i]
print(character)
에서 for문을 돌때 그 다음줄까지만 유효한 반복문인가요? 결과가 한줄로 쭉 출력되는걸 봐서 chararcter[key_list[i]]=value_list가 반복이 되고 최종적으로 print가 실행되는데 반복문을 돌때마다 print 함수가 출력되도록 하는 문법이 따로 있는지요?
괄호 대신 들여쓰기를 사용합니다!
For 다음에 들여쓰기된 줄이 모두 for 내부에 포함됩니다.
@@윤인성 아하 그렇군요 빠른 답변 감사합니다.!
감사합니다.
수고 하셨습니다.
좋은 주말 되세요^^
책 184페이지의 5초동안 카운트되는 숫자확인하는 예제 내용이 개념적으로 이해가안되는데 5초동안 카운트된 숫자 (책에서)14223967은 시간인가요? 무얼 기준으로 짧은시간동안 억단위의 숫자가 올라가는지요 그리고 컴퓨터의 성능과 상황에 따라 반복횟수가 달라진다고 했는데 그럼 카운트되는 객관적인 기준이 없는 숫자란 얘기인데 이 숫자는 무슨 숫자인가요?
유닉스 타임이라는 숫자입니다.
1970년 1월 1일 0시 00분을 기준으로 몇 초가 지났는지 나타내는 시간입니다.
좋은 강의 감사합니다.
정말 감사합니다💚 시험공부하는데 많은 도움이 됩니다\^&^/
만약 시간이 계속 흘러가는 걸 보여주면서 5초 뒤, 프린트로 "프로그램이 종료되었습니다."를 출력하고싶으면 어떻게 해야할까요?
import time
처음 = time.time()
while 처음 + 5 >= time.time():
print("현재 시각은 {}입니다.".format(처음))
print("프로그램이 종료되었습니다.")
이렇게 하고 코딩을 진행하니깐 돌리는 시점의 시간으로만 동일하게 출력되다가 5초 뒤 "프로그램이 종료되었습니다."라고 뜨네요
import time
처음 = time.time()
while 처음 + 5 >= time.time():
print("현재 시각은 {}입니다.".format(time.time()))
print("프로그램이 종료되었습니다.")
이렇게 format 뒤에 처음이 아닌 time.time() 으로 바꾸니깐 제가 원하는 대로 됐어요. 이유가 뭘까요 ㅠㅠ
교재 184쪽의 예시 같은 경우
import time
number = 0
target_tick = time.time() + 5
while time.time() < target_tick :
number+=1
print("5초동안 {}번 반복했습니다.".format(number))
이것 역시 제 질문과 같은 예시같네용 ㅜㅜㅜ 여기서 while 반복문을 돌릴 때마다 time.time() < target_tick : 의 time.time() 과 target_tick 속 time.time()은 같이 증가하는 게 아닌가용?? 너무 귀찮게 해서 죄송합니다
@@DailySangmin 처음이라는 녀석은 한 번 저장된 녀석일 뿐입니다, 그 시간이 계속 바뀌지 않습니다.
@@DailySangmin 증가 하라는 추가적인 할당을 하지 않았으므로, 변하지 않습니다. 컴퓨터는 시키지 않은 것은 하지 않습니다.
import time
시작시간 = time.time()
while 시작시간 + 61 > 시작시간:
pass
print("대기시간이 초과되었습니다.")
time.time() 말고 시작시간이라 입력하면 기다려도 "대기시간~"이 문장이 출력되지 않는데 이건 왜 그런가요??? 시작시간 = time.time()이면 뭘 써도 둘이 같은 거 아닌가요???
양지윤 현재 코드와 같이 작성하면, 시작시간은 절대 변하지 않습니다[처음에 그냥 고정한 것이므로], while 구문 내부에 작성해야, 반복을 돌면서 계속해서 계산하면서 값이 바뀌게 됩니다.
@@윤인성 앗 그렇군요!
혹시 간단하고 다양한 예문들을 볼 수 있는 곳이 없을까요 ㅠㅠ 다양한 예문들을 보고싶은데 찾기가 힘듭니다
다양한 예문은 알고리즘 문제를 풀면서 생각해본 뒤에 보는 것을 추천드립니다. 국내에도 백준 코딩 등의 알고리즘 문제 사이트들이 있으므로 확인해보세요!
안녕하세요 질문있습니다!
특정시간동안 프로그램을 정지시킬때 while 옆에 부등식을 쓰잖아요?
그런데 부등식 왼편과 오른편에 있는 time.time()이 똑같으니까, 함께 커져서
time.time() + 5 > time.time() 은 항상 True가 되어서 프로그램이 안끝날 것이라고 생각했는데, 저렇게 하면 프로그램이 5초뒤에 종료되니까...
제가 어느 부분을 잘 못 생각하고 있는 하세요 질문있습니다!
특정시간동안 프로그램을 정지시킬때 while 옆에 부등식을 쓰잖아요?
그런데 부등식 왼편과 오른편에 있는 time.time()이 똑같으니까, 함께 커져서
time.time() + 5 > time.time() 은 항상 True가 되어서 프로그램이 안끝날 것이라고 생각했는데, 저렇게 하면 프로그램이 5초뒤에 종료되니까...
제가 어느 부분을 잘 못 생각하고 있는 것인지 궁금합니다.
감사합니다.
앗 혹시 코드를 저장하고 실행하셨는지 확인해주세요...! 지금 생각하신 것처럼 실행되어야 맞는 코드입니다...!
안녕하세요, 선생님. 강의에서 5초 대기 후 프린트 되는 코드를 보고 왜 제가 작성한 코드는 실행이 안되는지 모르겠습니다...무엇이 잘못된 걸까요...?
import time
처음 = time.time()
while 처음 + 5 < time.time():
print("프로그램이 종료되었습니다.")
강의에서는 반복문 마친 후에 print 를 출력하는 코드를 보았는데, 더 짧게 할 수 있지는 않을까 하는 궁금증에서 while 반복문 안에 print 를 넣어서 만들어본 코드입니다..!
앗 혹시 while 처음 + 5 < time.time() 로 하게 되면 무한대로 계속 print 를 해야하기 때문에 에러로 출력이 안되는건가요? while 이 아닌 if를 써줘야 하나요?
연산자 방향이 반대여야 합니다!
# 처음 + 5 > time.time()
윤인성 아하 저는 [원래 고정한 시간 + 5초] 가 [현재의 시간]보다 더 작게 되었을때, 즉 고정한 시간으로 부터 5초가 지난 후에 while 반복문 안에서 print 를 실행시키는 코드를 작성한 것인데, 이런 논리로 짜면 안되나요..?!
2021년 3월 17일 수강완료 학교 학원 땜에 바쁘네요..ㅎㅎ
Keep 3:18
질문드립니다. while구문을 for구문처럼 사용했을때 왜 열형태가 아닌 행형태로 출력 되는건가요?
print 함수는 기본적으로 문자열을 출력하고 줄바꿈 문자를 출력합니다. 이를 end 매개변수로 띄어쓰기로 변경하면 줄바꿈하지 않고 쭉 출력합니다.
감사합니다. 점점 어려워지네요..
while로 특정시간후에 메세지뜨는 코드 스톱워치어플같은거 만드는데 쓰일수있겠네요
넵 다만 사실 이런 기능은 이미 더 편리하게 쓸 수 있는 라이브러리로 제공이 되는 중이라, 공부용으로만 살펴본 것이고 이후에는 라이브러리를 활용하게 됩니다...!
마지막 예제에서 while 처음 + 5 >= time.time(): 을 while 처음 + 5 >= 처음: 으로 바꿔서 실행했더니 프로그램 종료가 되지 않고 계속 while 반복문이 돌아가는것 같은데 왜 그럴까요?
처음이라는 것의 값을 바꾸는 작업이 없으므로
예를 들어 "처음"이 1로 초기화 되었다면
1 + 5 >= 1이 되어서 → 항상 참이 됩니다.
그래서 무한 반복이 도는 것입니다!
@@윤인성 이해가 잘 되지 않는 점은 강의에서
처음 = time.time()
while 처음 + 5 >= time.time():
위 구문처럼 코딩했기 때문에 처음 = time.time() 이렇게 변수로 지정이 되어 있어 답변하신 내용과 같은건 아닌가요..?
다르니까 다르게 작동하겠죠? ㅠㅠ
time.time()은 실행되는 시점의 시간을 구합니다.
반복문을 계속 돌면서 조건을 확인하는 부분을 실행할 때마다(while 처음 + 5 >= time.time() 부분)
time.time()이 실행되므로, 실행될 때마다 계속 최신 시간을 구합니다.
따라서 미리 저장해두는 코드와 다르게 작동합니다!
- 처음 + 5 # 얘는 계속 고정되지만
- time.time() # 얘는 계속 시간이 지나면서 증가하므로
차이가 5보다 커질 때 반복문을 나가는 것입니다.
- 처음 + 5 >= 처음
은 그냥 계속 처음 그대로 값이니까 변화가 없습니다!
@@윤인성 아하, 이해가 되었습니다. 감사합니다~!^^
강의 잘 들었습니다. 감사합니다.
항상 감사드립니다!! 제가 혹시 C++도 필요한데 혹시 선생님 책 중에 C++이 있을까요? 그리고 질문이 있습니다~ end = "" 를 하면 왜 가로로 출력이 되는거죠?
end = ""로 하면, 줄바꿈을 안 하기 때문에 주르륵 출력됩니다. C++은 따로 없습니다 'ㅁ' ...!
@@윤인성 end = "" 이게 왜 줄바꿈을 안하는게 되는건가요? ㅠㅠㅠ
감사합니다. 그런데 time() 대신에 time.time()을 사용하게 된 이유가 무엇인가요?
그냥 단어가 그렇게 만들어져 있을 뿐입니다.
파이썬 모듈을 설계한 사람의 일종의 설계 실수로 초기에 단어가 이렇게 설정되어서, 그냥 이렇게 써야 하는 것입니다.
안녕하세요 공부하다가 질문이 있어서 질문드립니다.!!
181page의 infinite_loop.py의 예제에서 "기본적으로 end가 '
'이라 줄바꿈이 일어나는데" 라고 말씀하셨습니다.
print()함수의 자동 완성 기능을 보면 def print(value .... end='
')라고 확인을 할 수 있습니다.!!!! 그리고 경험에 비추어 보았을 때에도 우리가 어떤 것을 print()으로 찍어내면
항상 줄바꿈이 일어났습니다. 따라서 질문1) 원래 우리가 print()이렇게 사용하지만 사실은 print(,end) 즉 ,end가 생략이 된거 아닌가요 그래야지만 end='
'이 들어가서 줄바꿈이 일어나지 않을까요??
질문 2) 혹시 end 하고 '
'의 차이점은 무엇인가요???
end는 이후에 나오게 되는 키워드매개변수니자 기본매개변수입니다. 이무 것도 매개 변수에 안 넣으면 줄바꿈이 들어간다는 의미입니다.
print(-----, end='_') 등으로 실행해보시면 end라는 매개 변수가 무엇을 하는 녀석인지 쉽게 이해하실 수 있을 것이라 생각합니다.
안녕하세요! 질문이 있어서 댓글 남깁니다 ^^
교재 184쪽에 '5초 동안 반복하기' 예제에서 5초 동안 {}번 반복했다는 뜻은, 5초 동안 number + 1 이 {}번 반복되었다는 뜻인가요??
넵 그렇습니다 'ㅁ' ...!
질문이있습니다 교재 184쪽에
target_tick = time.time() +5
while time_time() < target_tick :
number += 1
무슨 코드인가요?
현재 시간에서 5초 후의 시간을 구하고(target_tick)
반복문에서 계속 현재 시간을 구해서(time_time())
5초가 지났는지 확인하고(time_time() < target_tick)
계속해서 number의 값을 증가시키는 코드입니다...!
@@윤인성 그럼 number = 0 에서 시작해서 계속 1씩 더해나가는걸 5초간 반복했을때 숫자가 몇이 되는걸 보는건가요?
true가 무한 반복문이엇군요 ㅎㅎ
질문 받아주실 수 있나요ㅠㅠㅠㅠㅠ???
강의와 관련된 질문만 받습니다.