작성
·
511
1
강의 내용 중에서 while문이 탈출되는 조건이
1. 정답을 맞춰서 break 걸리는 경우
2. count값이 chance보다 커서 프로그램이 종료되는 경우
이 경우때문에 user_input이라는 변수를 while문 밖으로 빼서 새로 성공과 실패에 대한 출력문을 만드셨는데,
( 저같은 경우는 editor를 pycharm으로 사용중입니다. 그래서 다른건지는 모르겠습니다.)
user_input 변수를 while문 밖으로 빼는 과정에서 user_input은 while문 안에서 선언 된 지역변수이기 때문에 while문 밖으로 빼면 밖에서는 그대로 user_input 변수를 사용 못하는것 아닌가요..?
제가 변수 이해를 잘 못하고 있는건가요..?
답변 3
0
0
처음에 while 밖에서 user_input을 선언했을 때 can be undefined 이라고 밑줄 그어지길래 자바에서는 이런 에러 나면 변수 정의가 안되어서 에러 나더라구요..
파이썬도 똑같은 줄 알고 해당 에러보고 실행도 마저 안시켜보고 의문이 들어 질문부터 드렸었네요..
막상 밑줄이 그어져 있고 undefined 상태이긴 하지만 코드를 다 구현하고 실행하니 실행하는데는 전혀 문제가 없이 유지가 되네요!
말씀하신대로 파이썬과 자바가 다르다는걸 느끼게 돼서 되게 신기하네요..
감사합니다!
0
에디터의 종류는 아무런 상관이 없습니다. 먼저 말씀하신 내용이 변수의 개념으로는 원칙적으로 맞습니다. C/C++ 이나 다른 언어였으면 저렇게 코딩하지 않고 while 문 밖에서 먼저 user_input 을 초기화 해야 하는게 맞습니다. 그러나 파이썬에서는 조금 경우가 다릅니다.
위의 로직에서는 어쨌든 로직상 무조건 while 문 안으로 진입할 수 밖에 없는 구조이고 user_input 을 무조건 거치게 되어있습니다. 그렇기 때문에 while 문 밖에서도 user_input 값은 프로그램이 종료되기 전까지 유지가 됩니다.
인터프리터 언어는 컴파일된 언어와 다르게 위에서부터 순차적으로 해석하게 됩니다. 그래서 아래의 내용에 뭐가 있는지 알수가 없고 위의 코드에 문제가 없다면 아래의 코드도 문제없이 수행되는 구조로 운영된다고 보시면 됩니다.
좀 더 첨언하자면 위의 상황도 결국 인터프리터 언어의 특성일수도 있는데 위의 프로그램을 a.py 라고 만들어서 코딩했다 해도 위 프로그램은 a.exe 로 실행되지 않고 python.exe 에 의해 운영됩니다. 말씀하신 지역변수와 전역변수의 개념으로 보면 python.exe 가 관장하는 메모리의 영역이고 a.py 안에서 함수나 클래스를 선언하지 않은 상태에서 사용하는 변수는 모두 전역변수처럼 운영됩니다. 궁금하신 점에 도움이 되셨으면 좋겠습니다. ^^