만들면서 배우는 파이썬과 40개의 작품들 속 모듈을 알아보고 정리한다.
임의의 숫자를 맞추는 게임
import random
random_number = random.randint(1,100)
game_counter = 1
while True:
try:
my_number = int(input("1~100 사이의 숫자를 입력하세요: "))
if my_number>random_number:
print("다운")
elif my_number<random_number:
print("업")
elif my_number==random_number:
print(f"축하합니다. {game_count}회 만에 맞췄습니다.")
break
game_count=game_count+1
except:
print("에러가 발생하였습니다. 숫자를 입력하세요: ")
0.0 <= X < 1.0 를 만족하는 실수를 반환한다.
a <= N <= b-1 를 만족하는 임의의 정수 N을 반환한다.
type에는 문자열, 리스트, 튜플, range의 값을 입력받을 수 있고 무작위로 하나의 원소를 뽑는다.
IP는 IPv4 또는 IPv6 등으로 표현되며 숫자로 표현된 접속주소이다. IP를 아파트의 주소에 빗댄다면 외부 IP는 OO시 XX동 **아파트이고, 내부 IP는 동, 호수로 볼 수 있다.
일반적으로 인터넷 망이 설치된 가정집에는 공유기가 있어 여러 대의 컴퓨터, 스마트폰, TV 등의 기기를 연결하여 사용한다. 내부 IP는 집에 있는 공유기가 주소를 할당하여 준다. 반면, 외부 IP는 KT, LG 등 인터넷 망 공급자가 주소를 할당하여 준다.
import socket
in_addr = socket.gethostbyname(socket.gethostname())
print(in_addr)
컴퓨터가 연결된 접속 정보를 받아올 때 사용하는 모듈
호스트 이름을 IPv4 주소 형식('100.50.200.5'와 같은 문자열)으로 변환한다. 호스트 이름이 IPv4 주소면 변경되지 않고 반환된다.
파이썬 인터프리터가 현재 실행 중인 기계의 호스트 명을 포함한 문자열을 반환합니다.
import socket
in_addr = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
in_addr.connect(("www.google.co.kr", 443))
print(in_addr.getsockname()[0])
socket
으로 외부 사이트에 접속하고 접속된 정보를 바탕으로 IP를 확인한다.
class socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
AF_INET
(기본값), AF_INET6
, AF_UNIX
, AF_CAN
, AF_PACKET
또는 AF_RDS
여야 한다. SOCK_STREAM
(기본값), SOCK_DGRAM
, SOCK_RAW
또는 기타 SOCK_
상수 중 하나여야 한다. AF_CAN
일 때 프로토콜은 CAN_RAW
, CAN_BCM
, CAN_ISOTP
또는 CAN_J1939
중 하나여야 한다.fileno
를 지정하면, family
, type
및 proto
값이 지정된 파일 기술자에서 자동 감지된다.address
에 있는 원격 소켓에 연결한다.address
의 형식은 주소 패밀리에 따라 다른데, AF_INET 주소 패밀리에는 (host
, port
)쌍이 사용된다. host
는 'daring.cwi.nl'과 같은 인터넷 도메인 표기법의 호스트 이름 또는 '100.50.200.5'와 같은 IPv4 주소를 나타내는 문자열이며, port
는 정수이다. 이 코드는 https로 접속하기 위하여 port
를 443으로 지정한다.import requests
import re
req = requests.get("http://ipconfig.kr")
out_addr = re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1]
print(out_addr)
특정 사이트에 접속해서 내가 연결된 IP를 확인한다.
사이트에 접속하기 위해 불러온 모듈
IP 주소를 찾기 위한 정규식을 사용하기 위해 불러온 모듈
string
을 통해 스캔하여 정규식 pattern
이 일치하는 첫 번째 위치를 찾고, 대응하는 객체를 반환한다. 문자열의 어느 위치도 패턴과 일치하지 않으면 None
을 반환한다.
- 플라스크
파이썬 언어를 이용하여 웹을 개발할 수 있게 해주는 웹 개발 프레임워크- 프레임워크
쉽게 개발할 수 있도록 여러 개의 라이브러리, 모듈 등을 묶어서 제공하는 기능
달력으로 날짜를 선택하여 비트코인의 시세를 1시간 단위로 그래프에 표시해주는 웹앱을 만들어보자.
'streamlit'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.
위와 같은 오류가 뜨면서 명령어가 실행되지 않았다.
pip uninstall streamlit
명령어로 파일을 삭제하고, pip install streamlit
, pip3 install streamlit
, pip install streamlit --user
명령어로 재설치를 반복하였다.
시스템 환경변수 Path
에 streamlit 파일이 설치된 경로를 추가하였다.
vs code 재부팅을 반복하였다.
이러한 시도에도 같은 오류가 발생하였다.
C:\Users\(계정이름)\AppData\Roaming\Python\Python39\Scripts 에 설치되어있던 streamlit.exe
파일을 복사하여 C:\ProgramData\Anaconda3\Scripts 폴더에 붙여넣었더니 정상적으로 해결되었다.
Python 설치시 기본적으로 내장되어 있는 파이썬 표준 라이브러리로, 쉽고 간단하게 GUI 프로그램을 만들 때 활용된다.
import tkinter
window = tkinter.Tk()
window.title("가상화폐 금액표시")
window.geometry("400x200")
window.resizable(False,False)
label=tkinter.Label(window, text="hello")
label.pack()
window.mainloop()
import tkinter
import tkinter.font
window = tkinter.Tk()
window.title("가상화폐 금액표시")
window.geometry("400x200")
window.resizable(False,False)
font = tkinter.font.Font(size=30)
label=tkinter.Label(window, text="hello", font=font)
label.pack()
window.mainloop()
폰트를 설정하기 위한 라이브러리
pyinstaller -w -F main30-4.py
명령어 실행 시 'pathlib' 패키지를 삭제하라는 경고 문구가 떴다.
conda remove pathlib
경고 문구를 따라 위 명령어를 입력하여 'pathlib' 패키지를 삭제하려 하였으나, EnvironmentNotWritableError
가 발생하였다.
anaconda prompt를 관리자 권한으로 실행한 후 다시 conda remove pathlib
를 입력한다.
패키지가 삭제되었다.
다시 명령어를 입력하니, 정상적으로 실행된다.
응용프로그램이 생성된 것을 확인할 수 있다.
게임을 만들 때 사용하는 라이브러리