본문 바로가기

Python28

육십갑자를 파이썬으로 알아보자!(올해는 계묘년 : 검은 토끼의 해) 올해는 2023년 계묘년입니다. 그렇다면 자신이 태어난 년도에 무엇으로 불렸는지 알고 계신가요? 육십갑자는 "갑을병정무기경신임계"라 하는 천간 10개와 "자축인묘진사오미신유술해"라 하는 지지12개를 하나 씩 번갈아가면서 붙인 것을 육십갑자라 합니다. 올해는 천간 10개 중 계에 해당하고 지지 12개 중 묘에 해당합니다. 육십갑자를 만드는 원리는 갑 을 병 정 무 기 경 신 임 계 자 축 인 묘 진 사 오 미 신 유 술 해 가장 첫 번째는 '갑'과 '자'를 합쳐서 갑자년 이라 합니다. 이런 식으로 갑자년의 다음 해는 '을'과 '축'을 합쳐 을축년, 그 다음 해는 병인년 -> 정묘년 -> 무진년 -> ,,, 이렇게 계속 돌아갑니다. 하나 씩 하다보면 계유년에서 계 다음이 갑으로 순환하는 구조입니다. 때문에 .. 2023. 1. 5.
파이썬으로 연결리스트 만들기 4탄 : 단순 연결리스트 삭제연산 (맨 앞 노드 삭제 / 맨 뒤 노드 삭제 / 중간 노드 삭제 방법) 이번에는 단순 연결리스트에서 노드를 삭제하는 방법을 알아보겠습니다. 노드를 삭제할 때는 맨 앞 노드를 삭제 / 맨 뒤 노드 삭제 / 중간 노드 삭제로 경우를 나눌 수 있습니다. 그렇다면 삭제할 노드가 맨 앞인지, 맨 뒤인지, 중간인지 판단할 수 있어야 합니다. 만약 잘 판단했다고 치고 맨 앞 노드를 삭제하는 경우는 다음과 같습니다. 맨 앞 삭제 reference head -> -> -> .... data a b c d .... i) 맨 앞 노드 삭제 방법 -> head.next가 head가 된다. 맨 앞 삭제 reference head -> -> .... data a b c d .... 그러면 단순 연결리스트는 head 부터 시작하니까 a가 자연스럽게 끊어집니다. 방법을 알았으면 코드를 작성해야합니다. .. 2023. 1. 1.
파이썬으로 연결리스트 만들기 3탄 : 단순 연결리스트 삽입 연산(원하는 곳에 삽입하자! / 맨 뒤에 삽입 / 맨 앞에 삽입 / 중간에 삽입) 지난 시간 단순 연결리스트의 추가 연산에 대해서 알아보았습니다. 파이썬으로 연결리스트 만들기 2탄 : 단순 연결리스트 추가 연산 (연결리스트 자동 출력 만들기) 이전에 만들었던 코드에 이어서 이번에는 추가 연산을 하는 기능을 추가해보겠습니다. 추가 연산은 두 가지 경우의 수가 있음을 유추해볼 수 있습니다. 1. 이미 있는 연결리스트의 뒤에 추가하 c-i-s.tistory.com 이번에는 원하는 위치에 삽입하는 과정에 대해서 알아보도록 하겠습니다. 그림으로 우선 알아보도록 하겠습니다. 원리는 간단합니다. 삽입할 위치에 노드를 연결시켜주면 됩니다. 이렇게만 말만하면 너무 쉽게 느껴집니다. 이 과정을 조금 더 자세하게 알아보겠습니다. 위 그림 대로라면? 1) 삽입 할 위치와 리스트에 연결할 값을 입력받는다. .. 2022. 12. 6.
파이썬으로 연결리스트 만들기 1탄(자료구조 / 단순 연결리스트 / 이중 연결리스트 / 추가 / 삽입 / 삭제 / 접근) 파이썬의 클래스에 대해서 익숙해지는 시간을 가지기 위해서 간단한 자료구조인 Linked List, 연결리스트에 대해서 알아보도록 하겠습니다. 연결리스트는 각 노드를 선으로 연결한 것이라 할 수 있습니다. 그림으로 표현하면 다음과 같습니다. 저 그림을 조금 더 자세히 표현하면 이렇게 표현할 수 있고 이 그림은 단방향으로 연결되어 있어서 단순 연결리스트 또는 Singly Linked List 라고도 합니다. 저기 사각형 하나는 노드(Node)라고 합니다. 연결리스트는 노드들이 연결된 것이고 노드에는 값과 다음 노드를 가리키는 정보가 들어있습니다. 노드가 많이 필요할 수 있으니까 이를 class로 만들면 편합니다. 클래스를 만들 때는 속성과 행동을 봐야합니다. Node 클래스의 속성은 값과 다음 노드를 가리키.. 2022. 12. 4.
호기심 파이썬 : 메소드 (메소드 만드는 법 / 파이썬 클래스 메소드 / 스택을 구현해보자!) 지난 포스팅에서 생성자에 대해서 알아보았습니다. 이번에는 method에 대해서 알아보도록 하겠습니다. method는 클래스의 기능이라고 보면 됩니다. def를 이용해서 만들며 함수 기본 문법을 이용해 만듭니다. 우리가 평소 자주 사용하던 list 자료형도 사실은 객체입니다. 클래스로 구현이 되어있습니다.(파이썬은 전부 객체로 이루어져 있습니다.) 보통 처음 파이썬을 처음 공부할 때 리스트에 추가할 때 리스트변수.append(값) 이런 형태로 사용을 했는데 이때 append 함수라고 용어를 배우는 부분이 있는데 사실 함수가 아니라 append method라고 불러야 맞는 말입니다. (처음 배우고 기능적으로 별 차이도 없는데 용어를 구분해서 부른다면 헷갈리는 부분이 있기 마련입니다. 클래스까지 학습을 한다면.. 2022. 12. 2.
호기심 파이썬 : 클래스 (생성자 / 인스턴스 생성 후 초기화 / 인스턴스 변수 접근 / 접근 지정자) 이번에는 클래스 생성자 문법에 대해서 알아보겠습니다. 클래스를 이용하여 객체를 만들면 객체 고유의 속성 값을 가질 수 있습니다. 물론 필요없다면 안 가져도 됩니다. 오늘 알아볼 내용입니다. 1. 생성자 2. 접근 지정자 class Person: def __init__(self, name, age): """사람 객체 속성값 초기화""" self.name = name self.age = age p1 = Person("홍길동", 20) print(f"안녕하세요 제 이름은 {p1.name}이고, 나이는 {p1.age}살 입니다.") 1. 생성자 __init__ 메소드를 간략히 init method 라고 합니다. 함수에 밑줄이 양쪽에 두 번 그어져 있으면 특별한 기능을 하는 메소드입니다. 여러 가지 특수 메소드 .. 2022. 11. 30.
[파이썬 GUI] tkinter 7 화면 전환~~ (Frame을 이용한 화면 전환) tkinter로 화면 전환에 대해서 궁금해 하시는 분들이 많이 있는 것 같습니다. 프로그램들을 실행시키다 보면 이전과 다음을 클릭하도록 되어있는 것을 종종 볼 수 있습니다. 그것과 같이 화면을 전환하는 방법에 대해서 알아보겠습니다. 화면을 전환하려면 우선 각 화면을 만들어야 합니다. 매번 하던 방식은 root = Tk() Label(root, text="어쩌구" ... 이런 식으로 기본 화면에 만들었는데 이제는 각 화면을 따로따로 만들어주도록 하겠습니다. 그리고 버튼을 통해 이전과 다음 페이지로 넘어 갈 수 있도록 하겠습니다. 화면을 frame이라고 합니다. 그래서 Frame 위젯을 이용해야합니다. 이 Frame으로 각 화면을 만들어주도록 하겠습니다. from tkinter import * root = .. 2022. 11. 24.
[콜라츠 추측] 파이썬 GUI로 콜라츠 추측 알아보기2 [콜라츠 추측] 파이썬 GUI로 콜라츠 추측 알아보기1 콜라츠 추측에 대해서 들어보셨나요? 콜라츠 추측이란 임의의 양의 정수 n에 대해서 홀수 일 경우 3*n + 1을 하고 짝수일 경우 n / 2를 하는데 이를 임의의 양의 정수에 수행하면 항상 마지막은 4 2 1 c-i-s.tistory.com 해당 포스팅에 이어지는 내용입니다. 우선 gui로 표현하기 위해 공간을 만들어보겠습니다. from tkinter import * root = Tk() root.title("콜라츠 추측") root.geometry("1600x800+100+100") root.mainloop() -> 가로 1600, 세로 800입니다. -> 프로그램의 등장 위치는 좌 상단으로 부터 가로 100 세로 100 떨어진 위치에 나옵니다. .. 2022. 11. 3.
[콜라츠 추측] 파이썬 GUI로 콜라츠 추측 알아보기1 콜라츠 추측에 대해서 들어보셨나요? 콜라츠 추측이란 임의의 양의 정수 n에 대해서 홀수 일 경우 3*n + 1을 하고 짝수일 경우 n / 2를 하는데 이를 임의의 양의 정수에 수행하면 항상 마지막은 4 2 1 순으로 수렴한다는 것이 콜라츠 추측입니다. 5에 대해서 이 과정을 수행해보면 5 -> 홀수 -> 5 x 3 + 1 -> 16 16 -> 짝수 -> 16 / 2 -> 8 8 -> 짝수 -> 8 / 2 -> 4 4 -> 짝수 -> 4 / 2 -> 2 2 -> 짝수 -> 2 / 2 -> 1 1 -> 홀수 -> 1 x 3 + 1 -> 4 4 -> 짝수 -> 4 / 2 -> 2 2 -> 짝수 -> 2 / 2 -> 1 ... ... 결과적으로 마지막에는 4 -> 2 -> 1이 계속 반복이 됨을 알 수 있습니다.. 2022. 11. 3.
[파이썬 GUI] tkinter 6(특정 키를 누를 때 동작하는 bind함수/로그인 창 음영 넣는 법) 특정 키를 누를 때 동작할 수 있게 만드는 bind 함수에 대해서 알아보겠습니다. bind 함수는 위젯에 적용시킬 수 있습니다. 여기서 위젯이란 Label, Entry, Button 등을 모두 위젯이라고 하고 프로그램 화면에 보이는 대부분이 위젯이라고 볼 수 있습니다. 기본적으로 사용하는 방법을 알아보고 로그인 창에서 볼 수 있는 입력을 유도하는 음영을 표현해보겠습니다. 1. 기본 사용 방법 2. 로그인 창 입력 유도를 위한 음영 넣기 1. 기본 사용 방법 from tkinter import * def mouse_left_click(event): # 반드시 event 매개변수를 전달합니다. global label1 label1['text'] = "누르면 이렇게 변함" # 뭐가 들어오는지 확인해보자! pr.. 2022. 10. 28.
[파이썬 GUI] tkinter 5(입력 위젯 만들기) 이번에는 문자열을 입력받을 수 있는 위젯을 만드는 방법을 알아보겠습니다. 요번까지 Label, Button, Entry까지 하고 나면 기본적인 GUI를 만들 수 있습니다. 이를 이용하는 간단한 응용 방법에 대해서도 알아보도록 하겠습니다. 어떤 값을 입력받으려면 Entry 위젯을 사용해야 합니다. Entry에 대해서 다음 순으로 알아보도록 하겠습니다. 1. 기본 사용 방법 2. Entry 옵션 3. 버튼을 이용한 응용 방법 1. 기본 사용 방법 기본 사용방법은 우선 나타나게 하는 방법입니다. 지금까지 해왔던 Label, Button과 비슷한 구조입니다. from tkinter import * gui = Tk() gui.title("입력을 받아보자!") gui.geometry("400x300+300+300".. 2022. 10. 26.
[파이썬 GUI] tkinter 4(버튼 사용하기/버튼의 기능 만들기) 이번에는 GUI에서 특정 기능이 발휘 될 수 있는 버튼 위젯을 사용하는 방법을 알아보겠습니다. 1. 버튼 기본 사용방법 2. 버튼 속성 3. 버튼을 이용한 Label 위젯의 text변경 1. 버튼 기본 사용방법 바로 코드를 통해서 알아보겠습니다. from tkinter import * def but(): print("기능 실행") gui = Tk() gui.title("버튼 사용하기") gui.geometry("400x300+300+300") # 기본 사용법 Button(gui, text="버튼이당", command=but).pack() gui.mainloop() 이 코드의 실행 화면입니다. 버튼을 누르면 콘솔 화면에 다음과 같이 나타납니다. 코드 설명입니다. Button(gui, text="버튼이당",.. 2022. 10. 21.
[파이썬 GUI] tkinter 3(위젯을 화면에 배치하는 방법, pack, grid, place) tkinter에서 위젯을 나타내게 할 때 사용되는 3가지 메소드가 있습니다. 1. pack method 2. grid method 3. place method 1번 pack method는 절대적인 위치에 등장시키고 싶을 때 사용합니다. 예를 들어 300x400, 또는 이와 다른 화면 크기에서 위젯을 맨 위, 맨 아래 등에 배치하고 싶을 때는 pack method를 사용합니다. 이 메소드는 내가 어디에 정확하게 배치하고 싶을 때는 부정확할 가능성이 있습니다. 2번 grid method는 엑셀과 같다고 생각하면 됩니다. 엑셀과 같이 격자를 위젯의 크기에 맞게 자동으로 설정이 됩니다. 자동으로 격자가 생성되기 때문에 위젯의 크기가 들쭉 날쭉한다면 사용하기 곤란할 수도 있습니다. 3번 place는 좌표를 이용하.. 2022. 10. 14.
[파이썬 GUI] tkinter 2(Label을 이용하여 글자, 이미지 표현하기) GUI에서 글자를 나타내게 하고 싶으면 Label class를 사용해야 합니다. Label class는 글자 뿐만 아니라 이미지도 나오게 할 수 있습니다. 오늘 알아볼 주제입니다. 1. Label class 기본 사용법 2. Label 나오게 하기 3. Label에서 사용하는 속성들 4. 이미지 나오게 하기 1. Label class 기본 사용법 from tkinter import * gui = Tk() gui.title("Label 사용하기") gui.geometry("400x300+300+300") gui.resizable(False, False) # Label 사용법 1 Label(gui, text="string") gui.mainloop() Label(gui, text="string") -> gu.. 2022. 10. 14.
[보안] 2. 우분투에 파이썬 설치(vscode 설치) 이번 시간에는 우분투에 vscode를 이용하여 파이썬을 설치해보도록 하겠습니다. 기본적으로 text mode가 아니라 GUI mode이기 때문에 .deb 파일을 다운받아 설치하겠습니다. 1. vscode 설치 우분투에서 https://code.visualstudio.com/docs/setup/linux 에 접속하여 '.deb package (64-bit)'를 클릭하면 설치파일을 다운받을 수 있습니다. download 디렉터리에 가면 다운 받은 파일이 있습니다. 아래의 명령어를 다운로드 디렉터리로 이동한 후 실행합니다. 해당 명령어는 .deb 파일을 설치하는 명령어입니다. sudo dpkg -i [파일명] 설치가 완료되었으면 application 목록에 보면 vscode 아이콘이 존재할 것입니다. 2. v.. 2022. 8. 25.
호기심 파이썬(함수 사용법 2탄 : **kargs, 나를 다시 호출하는 재귀함수) 이번에는 매개변수로 딕셔너리 형태로 전달하는 **kargs와 나를 다시 호출하는 재귀에 대해서 알아보겠습니다. 1. 키워드와 값을 전달하는 **kwargs 키워드와 함께 값을 함수로 딕셔너리 형태로 전달하는 매개변수입니다. 예제와 함께 간단한 사용법을 알아보겠습니다. def function2(**kwargs): print(kwargs) function2(pi=3.141592, sqrt2=1.414) 결과 값은 아래와 같습니다. {'pi': 3.141592, 'sqrt2': 1.414} 함수의 매개변수 부분에 **kwargs의 **은 키워드와 값을 전달해주는 기능을 의미하며 뒤의 kwargs는 단순 변수 이름입니다. 그러므로 이름은 아무거나 해도 되지만 **은 유지해야 합니다. 매개변수를 총 정리해보겠습니.. 2022. 7. 3.
파이썬 : 올림/내림/반올림(ceil/floor/round) 파이썬에서 올림 내림 반올림을 하는 법에 대해서 알아보겠습니다. 수학적으로 올림 내림 반올림의 의미는 잘 아실것이라 생각합니다. 보통 이것들을 사용할 때 소수점 n번째 자리 버림, 십의 자리 올림 등등 여러 가지로 사용이 가능하지만 아래에 서술할 올림 내림 반올림 함수들은 소수점에 대해서만 적용이 됩니다. 1. 올림 math 모듈의 ceil 함수를 사용해야 합니다. 소수점 첫째 자리를 올려 정수로 만듭니다. 사용법 math.ceil(숫자) # 예제코드 import math # math 모듈 불러옴 num1 = 3.141592 print(math.ceil(num1)) num1 변수를 올림하면 4가 됩니다. 2. 내림 math 모듈의 floor 함수를 사용해야 합니다. 소수점 첫째 자리를 내려 정수로 만듭니.. 2022. 7. 1.
파이썬 마인크래프트 : 파이썬과 마인크래프트 1.19버전 연동 방법 파이썬과 마인크래프트를 서로 연결하는 방법을 알아보겠습니다. 당연한 이야기겠지만 자신의 마인크래프트 계정이 있어야 합니다. 파이썬 연동에 필요한 항목 1. 마인크래프트 2. 파이썬 설치 3. 자바 jdk 설치 4. 사용할 마인크래프트 버전과 맞는 spigot 파일 5. 파이썬을 실행 시킬 raspberryjuice 파일 1. 마인크래프트 마인크래프트는 이미 준비가 되었다고 가정하겠습니다. 2. 파이썬 설치 https://www.python.org/ 파이썬 공식 페이지입니다. 여기서 download에 들어가서 설치하면 됩니다. 단, 주의하실 점은 path 추가 체크박스는 반드시 체크하고 넘어가시길 바랍니다. 나중에 곤란한 일이 생길 수도 있습니다. 3. 자바 jdk 설치 https://www.java.co.. 2022. 6. 29.
파이썬 마인크래프트 : player 관련 함수 마인크래프트와 파이썬의 연동은 차후 글을 올리도록 하겠습니다. 마인크래프트에서 player 관련 함수들을 살펴보겠습니다. from mcpi.minecraft import Minecraft mc = Minecraft.create() # 서버와 연결 # 정수 형태 플레이어 좌표 pos_integer = mc.player.getTilePos() print(pos_integer) # 실수 형태의 플레이어 좌표 pos_float = mc.player.getPos() print(pos_float) 위 코드에 대한 실행 결과입니다. 실제 마인크래프트의 좌표를 살펴보겠습니다. 출력된 좌표와 실제 마인크래프트간 차이가 있습니다. 출력된 좌표 - 미지수 = 실제 좌표 이 계산대로 미지수를 구해보겠습니다. 7 - x = -.. 2022. 6. 16.
호기심 파이썬(함수 1탄 : 함수 만들기, 여러 개 입력받기*args) 이번에는 함수에 대해서 알아보겠습니다. 함수는 수학시간에 했던 함수의 개념과 동일합니다. 수학에서의 함수는 아래 그림과 같이 어떠한 값을 넣으면 결과 값이 튀어나오는 구조입니다. 이와 같은 방식으로 프로그래밍의 함수로 마찬가지 입니다. 함수의 구조를 살펴보겠습니다. def function_name(parameter1 , parameter2 ... ): 함수 호출 시 작동할 코드 return 반환하고 싶은 값 def는 definde의 약자입니다. function_ name 은 함수 이름을 작성하는 부분입니다. parameter는 함수 호출 시 함수로 전달할 매개 변수 입니다. return은 함수를 종료하고 함수를 실행한 값을 돌려줍니다. 1. 함수의 기본 사용법 매개변수와 return은 필요에 따라 사용할.. 2022. 5. 13.
호기심 파이썬 ( 변수 이름 만들기 ) 변수 이름을 만들 때에도 규칙이 있습니다. 만약 한 반에 같은 이름이 여러명 있다면 누군가 이름을 부를 때 어떤 친구의 이름을 부르는 것인지 혼란이 올 것 입니다. 그래서 변수의 이름은 독특해야(unique) 합니다. 첫 번째 규칙 : 변수의 이름은 독특해야 한다. 만약 변수의 이름이 아래와 같을 때 a=1 b=2 ab=3 C=4 첫 번째 규칙에 따라 독특하긴 하지만 어떠한 용도로 사용되는지 구분이 가지 않습니다. 변수는 저장된 값의 의미를 담고 있는 것이 훨씬 알아보기 편리합니다. name = "코딩" age = 20 과 같이 특별한 의미도 지니고 있다면 이후에 코드를 보아도 이해하기 쉽습니다. 두 번째 규칙 : 변수는 저장된 값에 대한 의미를 가지면 좋다. 이 후의 규칙들은 특별히 설명까지는 필요하지.. 2022. 5. 12.
호기심 파이썬(반복문 : while문) 파이썬은 특정 범위를 반복 시킬 수 있는 for 문과 조건에 따라 반복 시킬 수 있는 while 반복문이 있습니다. 이 while 반복문의 특징은 조건이 참이면 반복을 실행하고 조건이 거짓이 되면 반복문을 중단하는 특징이 있습니다. 또한 모든 for문은 while 반복문으로 변환이 가능하지만 while 반복문은 for문으로 변환 될 수도 아닐 수도 있습니다. 이는 for문의 특징 때문인데 특정 범위만을 반복 시킬때만 사용가능하기 때문입니다. while 반복문의 구조를 살펴보겠습니다. while (조건식): --- ⓐ 반복시킬 문장 --- ⓑ 굉장히 심플하게 되어있습니다. 반복의 순서는 1. ⓐ에서 조건식의 참 거짓 여부 2. ⓑ ⓐ조건이 참이면 반복시킬 문장 실행 3. 다시 ⓐ조건 검사 4. ⓑ ⓐ조건이.. 2022. 5. 9.
호기심 파이썬(제어문 : for문을 쉽게 생각하는 법) 반복문은 조건에 따라 반복하는 while 반복문과 범위에 따라 반복하는 for문이 있습니다. 이 중 while 반복문은 어떠한 경우에도 반복할 수 있는 반복문이나 for문은 범위에 따라 사용하기 때문에 제한적입니다. 그러나 제한적이여도 for 반복문은 너무나도 편리한 반복문입니다. while 반복문이든 for 반복문이든 반복문에서 중점적으로 보아야할 것은 어떤 것을 반복할 것인지, 얼마나 반복할 것인지 찾는 것이 굉장히 중요합니다. 따라서 반복문을 사용하는데 헷갈리는 부분이 있다면 반드시 이 두 가지를 확인해보아야 합니다. """ 만약 다음과 같은 출력 결과를 얻고 싶다면? 실행 결과: 양의 정수를 입력하시오: 5 ##### #### ### ## # """ # 5를 입력하면 #으로 만든 삼각형이 나오면 .. 2022. 4. 22.
호기심 파이썬(유용한 method 및 함수 활용 예시) 이번에는 파이썬에서 유용하게 쓰이는 자료형의 메소드와 유용한 함수에 대해서 알아보겠습니다. 해당 내용은 몰라도 꾸역꾸역 구현할 수 있지만 이미 만들어져 있으므로 그냥 가져다 사용하면 됩니다. 1. 합계 구하기 2. 문자열 분리 3. map 함수 4. 대문자? 소문자? 5. 길이(원소의 개수) 구하기 6. 리스트 원소의 index번호 구하기 1. 합계 구하기 for 반복문을 이용하면 합계를 구하는 코드는 손쉽게 만들 수 있습니다. 그러나 이러한 코드 대신에 sum함수를 사용하면 훨씬 간편합니다. 형식은 다음과 같습니다. sum(자료형) => 자료형에는 리스트와 튜플이 사용됩니다. 2. 문자열 분리 "1 2 3 4 5" 이런식으로 되어있는 문자열을 분리시켜 문자열 형태로 리스트에 저장됩니다. 사용방법은 다음.. 2022. 4. 21.