반응형

프로그래밍 215

파이썬 가위바위보 알고리즘

가위바위보 문제를 해결하는 방법은 여러가지가 있습니다. 하지만 그 근본은 가위, 바위, 보 각각을 숫자로 매핑해서 대소를 비교하는 것입니다. 대소를 비교하는 방법은 너무 다양해서 딱히 어떤 방식이 가장 좋다고 볼 수 없습니다. 비교 가지수도 9가지 뿐이므로 모든 경우를 다 비교하는 것도 어렵지 안고 효율성도 나쁘지 않습니다. 가위를 1로 두고 바위(2), 보(3) 이렇게 숫자로 매핑하면 됩니다. 매핑은 파이썬 사전을 사용하면 됩니다.(아래 코드 참조) 여러명이 가위바위보 게임을 할 수도 있겠지만 여기서는 컴퓨터와 나, 이렇게 둘이서 게임을 하는 프로그램을 작성합니다. 다음은 모든 경우를 비교하는 방법을 사용해서 컴퓨터와 가위바위보를 하는 코드입니다. 파이썬 아나콘다 3.5.2를 사용했고 IDLE 상에서 ..

css 선택자 개념과 종류

오늘은 css3를 처음으로 맛보는 날이므로 가볍게 css3가 어떻게 적용되고 css에서 선택자라는 녀석이 뭔지 살펴보겠다. 사실 본인은 웹 언어에 대해서는 적당히 알고는 있긴하지만 특별히 공부할 생각이 없었는데 c, java와 같은 범용적인 프로그래밍 언어보다 쉽고, 그 동안 부분적으로만 알아오다 보니 뭔가 답답하기도 해서 한번 쭉 정리하는 것이다. CSS는 HTML과 쌍을 이룬다. 최근 웹 페이지는 html문서와 css문서가 같이 사용되는데 html이 건축물이라면 css는 건축물을 꾸미는 인테리어라고 볼 수 있다. HTML 문서만 있더라도 웹페이지가 굴러가는데는 충분하다. 하지만 건축을 해놓고 인테리어를 안해 놓으면 누가 그 건물에 입주를 하겠나? 따라서 이 둘은 항상 같이 다닌다고 생각하면 된다. H..

HTML 태그 연습 리스트를 만드는 ul, ol, dl 그리고 li 태그

앞서 공부한 표를 만드는 table 태그와 더불어 오늘 연습할 리스트를 만드는 태그는 레이아웃을 설정하는 데도 사용되고 사용 빈도도 높으므로 꼭 알아 두어야하는 기본적인 태그다. 사용법은 table 태그와 비슷하다 다음은 테이블 태그의 형식이다. .. ... .. .... ol 태그, ul 태그이번에는 리스트 태그를 보자. 아이템 1 아이템 2 테이블의 시작과 끝을 알려주는 table 태그 처럼 리스트도 리스트의 시작과 끝을 알려주는 ol, ul 태그가 있다. ol, ul 둘 다 리스트지만 형식이 다르다. 아이템 1 아이템 2 ol은 ordered list의 약자로 순서가 있는 리스트라는 의미다. 그래서 아이템 앞에 번호가 매겨진다.아이템 1아이템 2 ul은 unordered list의 약자다. 순서는 ..

html 표만들기 정리

html 표만들기 태그를 정리입니다.html 표 만들기 태그의 구조 예제 값 ..... 값 ..... 표는 행과 열로 구성되어 있다. HTML 문서라고 다를 것은 없다. HTML 문서에서 표를 만들기 위해서는 세 개의 태그를 사용하는데 table 태그, tr 태그, td 태그다. table 태그는 표의 시작과 끝을 알려주는 태그다. 실질적으로 table 태그가 표를 그려주는 것은 아니다. tr 태그는 행을 그려준다. 앞에서 보여준 html 예제는 tr 태그가 두 번 사용되었다. 태그 시작과 끝을 포함해서 ... 을 한번으로 친다. 그리고 한 번의 tr 태그는 하나의 행을 만들어 준다. 따라서 앞에서 예로든 html 테이블은 두 개의 행을 가질 것다. table 태그와 tr 태그만 있는 표는 다음과 같아야..

HTML 태그와 속성 이해하기

HTML 태그란 무엇인가? 그냥 무작정 태그를 공부하기 보단 그 전에 왜 태그라는 것이 존재하는가에 대해서 나름 개인적으로 생각한 바를 이야기해 보겠습니다. HTML(Hyper Text Markup Language)은 웹문서를 작성하는 언어입니다. HTML은 프로그래밍 언어의 범주에 들어있지만 범용적인 프로그래밍 언어와 달리 문서를 작성하는데 특화된 언어입니다. 그래서 범용적인 프로그래밍 언어와는 구조적으로 많은 차이가 있습니다. 우선 HTML은 구조가 단순합니다. 문서를 만드는 언어이므로 가장 중요한 것은 문서의 내용입니다. HTML은 여기에 보조적인 역할을 하는 것이죠. 예를들어 특정 텍스트에 링크가 걸려있는 것은 웹 문서에서 흔하게 볼 수 있습니다. 바로 HTML 태그를 사용해서 이런 기능을 추가하..

HTML5 강의 시작

HTML(Hyper Text Markup Language)란 웹(web) 페이지를 만들기위해 사용되는 프로그래밍 언어! 그렇다면 웹(web)이란 일종의 문서 전송을 위한 서비스로 HTML로 만든 문서들이 얽혀 있는 것을 본 따서 웹(web)이라고 이야기 합니다. 대충 구조를 보자면 HTML로->웹문서가 만들어지고->웹(Web) 서비스를 통해서 사용자들에게 문서가 전달됩니다. www웹(wed)이라 하면 www(World Wide Web)를 뜻하는데 인터넷 상에서 이루어지는 서비스입니다. 구체적으로 웹(Web) 서비스라고 하면 HTTP를 통해서 HTML로 만든 문서를 전송할 수 있도록 구축된 서비스를 말하죠. 웹(web)서버, 웹(web)문서 웹(web)페이지 등등 웹이라는 말은 익히 많이 들어 봤을 겁니다..

클래스 템플릿에 대한 간단한 정리

앞서 템플릿에 대한 개념을 설명하면서 함수 템플릿에 대해 살펴보았습니다. 2017/04/18 - [프로그래밍/cpp] - C++ 템플릿(template) 이해하기 이번에는 클래스 템플릿에 대해 살펴볼 것인데 함수 템플릿과의 차이점에 초점을 맞춰서 이해할 필요가 있습니다. 클래스 템플릿을 선언하는 방법은 함수 템플릿의 선언과 차이가 없지만 함수와 클래스의 구조적인 차이점으로 인해 클래스 템플릿을 사용할 때 반드시 타입을 명시해 줘야 합니다. 명시해주는 방법은 함수 템플릿의 구체화 지정과 동일하므로 쉽게 이해할 수 있습니다. 우선 템플릿 선언을 하는 예제를 살펴보겠습니다. 클래스 템플릿의 선언 클래스 템플릿 선언에 대한 내용은 굳이 길게 설명할 필요없습니다. 함수 템플릿을 만드는 방식과 동일하기 때문입니다...

프로그래밍/cpp 2017.04.29

파이썬으로 로또 번호 생성기 만들기

로또 번호를 생성하기 위해 난수를 발생시켜야 합니다. 파이썬 난수에 관한 모듈은 random 모듈 입니다. 이 모듈 내부에 Random 클래스가 존재하고 메르센 트위스터 생성기를 사용하여 난수를 생성합니다. random 모듈을 import 하면 Random클래스의 객체가 _inst라는 이름으로 생성되고 내부의 멤버 함수들이 멤버함수이름 = _inst.멤버함수이름 이라는 형식으로 바인딩됩니다. 예를들어 random.random은 random._inst.random를 바인딩한 함수라고 표현할 수 있습니다. 2017/04/23 - [프로그래밍/python] - 파이썬 랜덤(random) 모듈로 난수 생성하기 어찌되었건 random모듈에 대한 구체적인 사용법은 위 링크를 참조하고 간단한 로또 번호 생성기를 만들..

파이썬 랜덤(random) 모듈로 난수 생성하기

랜덤한 숫자를 뽑아내는 알고리즘은 프로그래머가 따로 만들 필요가 없습니다. 파이썬의 경우는 random모듈을 사용해서 랜덤한 수를 뽑아낼 수 있는데 여기에 사용되는 알고리즘 엔진은 메르센 트위스터(Mersenne Twister) 생성기라는 것입니다. 임의의 값을 뽑아내는 데 이 생성기를 많이 사용하죠. 이것을 의사난수 생성기(Pseudo-random)이라고 하는데 의사라는 말은 가짜라는 뜻으로 추측이 가능하다는 말입니다. 가짜라고 해서 품질이 나쁜건 아닙니다. 메르센 트위스터는 품질이 좋은 의사난수를 생성해 내며 사용자 입장에서는 정말 난수처럼 보입니다. 단지 엄밀히 따지자면 수학적인 계산을 통해서 만들어진 수이므로 f:x->y 처럼 함수관계가 있다는 것 뿐입니다. 저도 잘은 모르지만 난수를 생성하는 엔..

파이썬 tkinter에서 쓰레드를 사용하려면

tkinter에서 쓰레드를 사용하려면 tkinter가 어떻게 동작하는지 어느 정도 이해가 필요합니다. 우선 tkinter 프로그램을 실행하면 메인 쓰레드에서 GUI로 동작하게 될 객체의 mainloop를 호출해야 합니다. 이 호출로 인해 메인 쓰레드에서의 코드는 더 이상 실행되지 않고 멈추게 되면서 새로운 쓰레드가 시작되어 이벤트 루프와 GUI의 update가 계속 진행됩니다. 우리가 보통 프로그램을 실행할 때 보이는 단추나 텍스트 등이 보이면서 사용자의 입력에 반응하는 것이죠. 사용자가 프로그램 닫기 단추를 누르면 이 루프가 종료되면 메인쓰레드의 코드가 다시 진행되게 됩니다. 이 후의 코드가 있다면 실행되겠죠. 프로그램 실행 중에는 버튼이 눌리면 해당 리스너가 호출되고, GUI 요소를 옮기거나 하면 새..

반응형