이번 챕터에서는 PyScript를 이용해서 입력받거나 화면에 출력하는 방법에 대해서 알아볼 것입니다. PyScript에서 입력과 출력을 처리하는 방법으로는 Python에서 사용하던 input
과 print
, 그리고 PyScript의 내장 함수인 display
와 write
가 있습니다. 이 중에서 write
의 경우에는 DOM과 관련된 요소이므로 다른 챕터에서 살펴보고, 이번에는 나머지 3개의 방법에 관해서만 설명하겠습니다.
처음으로 알아볼 문법은 print
입니다. PyScript에서 print
문법은 JavaScript에서 console.log
로 콘솔창에 출력하는 것과 비슷한 역할을 합니다. 사용 방법은 Python에서와 동일한 print(values)
입니다. 다음과 같은 예제코드를 작성한 이후에 설명하도록 하겠습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PyScript print</title>
<link rel="stylesheet" href="<https://pyscript.net/latest/pyscript.css>"/>
<script defer src="<https://pyscript.net/latest/pyscript.js>"></script>
</head>
<body>
<py-script>
print("hello world!")
for i in range(1,10):
print(f'2 * {i} = {2*i}')
</py-script>
</body>
</html>
HTML 기본 템플릿을 작성한 후, CDN 방식으로 PyScript를 불러옵니다. 그 후 <py-script>
태그를 작성하고 그 안에 Python 문법으로 실행시키고 싶은 코드를 작성하면, 브라우저에서 Python을 사용할 수 있습니다. 현재 작성된 코드는 “hello world!”와 구구단 2단을 print 하는 것입니다. 이 HTML 문서를 실행하면 브라우저에 다음과 같이 원하던 결과가 화면에 출력되는 것을 확인할 수 있습니다.
하지만 출력이 조금은 특이한 방식으로 되는 것도 확인할 수 있습니다. PyScript 내에서 print
문법은 <py-terminal>
태그를 <body>
태그 최하단에 생성하고, 그 안에 <pre>
태그를 만들어서 출력하고자 하는 내용을 집어넣는 방식으로 작동합니다. 이 <py-terminal>
태그는 CDN 방식으로 적용한 PyScript CSS를 통해서 위와 같은 형태로 표시됩니다. 개발자 도구(F12)에서 <body>
태그를 살펴보면, 앞서 설명된 것처럼 작동하는 것을 확인할 수 있습니다.
<body>
<py-script id="py-internal-0"></py-script>
<py-terminal auto="" docked="" class="py-terminal-docked">
<pre class="py-terminal">
hello world!
<br>
2 * 1 = 2
<br>
2 * 2 = 4
<br>
2 * 3 = 6
<br>
2 * 4 = 8
<br>
2 * 5 = 10
<br>
2 * 6 = 12
<br>
2 * 7 = 14
<br>
2 * 8 = 16
<br>
2 * 9 = 18
<br>
</pre>
</py-terminal>
</body>
또한 개발자 도구에서 콘솔을 열어보면, JavaScript의 console.log
처럼 print
도 콘솔에도 결괏값을 출력하는 것을 확인할 수 있습니다. 추후에 알려드릴 <py-config>
라는 태그 내에서 print의 결과를 지금처럼 화면에도 표기할 것인지, 콘솔 창에만 표기할 것인지, 또는 <py-terminal>
태그가 화면 최하단에 고정될 것인지, 콘텐츠의 끝에 표기될 것인지 등을 선택할 수 있습니다. 이 부분은 해당 챕터에서 더 자세히 알아보겠습니다.
이번 챕터에서 알아볼 문법은 input
입니다. PyScript에서 input
문법은 JavaScript의 prompt
와 같은 방식으로 동작합니다. print
와 마찬가지로 input
도 Python에서와 동일한 방식으로 사용할 수 있습니다. 예제코드를 보면서 설명하도록 하겠습니다.
<py-script>
number = int(iput('숫자를 입력하세요.'))
for i in range(1,10):
print(f'{number} * {i} = {number*i}')
</py-script>
이번에 작성된 코드는 숫자를 입력받은 후에, 입력받은 숫자의 구구단을 출력하는 것입니다. 이번 예제에서는 prompt
창에 “3”을 입력하겠습니다. 이 문서를 실행해 보면 다음과 같은 결과를 볼 수 있습니다.