반응형

Python 2.7 Single Linked list 구현


참고자료 : starmooc.kr kaist 문일철 교수 데이터구조 및 분석 인강


class Node:

value = ''

nextnode = ''

binhead = False

bintail = False


def __init__(self, value='', nextnode='', binhead=False, bintail=False):

self.value = value

self.nextnode = nextnode

self.binhead = binhead

self.bintail = bintail

def getValue(self):

return self.value

def setValue(self, value=''):

self.value = value

def getNext(self):

return self.nextnode

def setNext(self, nextnode=''):

self.nextnode = nextnode

def isTail(self):

return self.bintail

def isHead(self):

return self.binhead




class SinglyLinkedlist:

nodehead = ''

nodetail = ''

size = 0


def __init__(self):

self.nodetail = Node(bintail = True)

self.nodehead = Node(binhead = True, nextnode = self.nodetail)

def insertAt(self, objInsert, idxInsert):

nodeNew = Node(value=objInser)

nodePrev = self.get(idxInsert - 1)

nodeNext = nodePrev.getNext()

nodePrev.setNext(nodeNew)

nodeNew.setNext(nodeNext)

self.size = self.size+1

def removeAt(self, idxRemove):

nodePrev = self.get(idxRemove - 1)

nodeRemove = nodePrev.getNext()

nodeNext = nodeRemove.getNext()

nodePrev.setNext(nodeNext)

self.size = self.size - 1

return nodeRemove.getValue()

def get(self, idxRetrieve):

nodeReturn = self.nodeHead

for itr in range(idxRetreve + 1):

nodeReturn = nodeReturn.getNext()

return nodeReturn

def printStatus(self):

nodeCurrent = self.nodehead

while nodeCurrent.getNext().isTail() == False:

nodeCurrent = nodeCurrent.getNext()

print nodeCurrent.getValue(),

print

def getSize(self)

return self.size


반응형

'프로그래밍 > Python' 카테고리의 다른 글

[Python]sqlalchemy 사용법  (0) 2022.12.07
[PYTHON] 파이썬 함수 매개변수  (0) 2022.08.11
[Python] flask_restful fields  (0) 2021.10.08
창원시 버스 API 사용하기  (1) 2016.02.22
반응형

Opensource python chatbot : ChatterBot 


Opensource url : https://github.com/gunthercox/ChatterBot


실행 환경 : Ubuntu 16.04.3 LTS


설치 방법 : Terminal에 pip install chatterbot 입력. (pip 설치를 따로 해야됨)


* 한글입력을 하기 위해 Ubuntu 한글 세팅을 미리 해줘야 함.


한글 지원이 안되기 때문에 한글 데이터를 추가 해줘야 함.

  ~/.local/lib/python2.7/site-package/ 경로에 chatterbot library가 설치됨.

  ~/.local/lib/python2.7/site-package/chatterbot_corpus/data 경로에 korean 폴더를 만든 후 english폴더 내 있는 파일들 중 .json 파일과 .yml 파일 형식에 맞게 한글로 된 파일을 만들어 추가한다.


실행 소스

# -*- coding: utf-8 -*-

from chatterbot import ChatBot

from chatterbot.trainers import ChatterBotCorpusTrainer

chatbot = ChatBot(

"Name",

input_adapter = 'chatterbot.input.TerminalAdapter',

output_adapter = 'chatterbot.output.TerminalAdapter'

)

chatbot.set_trainer(chatterBotCorpusTrainer)

chatbot.train("chtterbot.corpus.korean")

while True:

try:

b = chatbot.get_response(None)

except(KeyboardInterrupt, EOFError, SystemExit):

break


위 소스를 실행시키면 한국어가 되는 chatterbot이 실행된다.

하지만 원활한 대화를 하기 위해서는 많은 양의 korean corpus data가 필요하다.

실행하면 sqlite로 대화했던 내용과 corpus data에 없는 내용이 입력되면 자동적으로 데이터를 추가하여 답변을 해준다. 하지만 그 답변은 내가 이전에 사용한 대화 내용 중에 있는 내용이다.


위 방식 말고도 다양하게 corpus데이터를 학습하는 방법이 github project에 소개되어 있다.

반응형
반응형

//숫자외 입력을 받으면 새로 입력을 받게한다. 숫자 입력받을 시 프로그램 종료.


#include "iostream"

using namespace std;


void main()

{

int num=0;

cout << "숫자를 입력하세요;" << endl;

while (!(cin >> num)) {

cin.clear();

cin.ignore(INT_MAX,'\n');

cout << "잘못된 값을 입력하셨습니다. 숫자만 입력해주세요.\n";

}

}


실행환경 : Visual studio 2017 C++ / Windows 10


반응형

'프로그래밍 > C/C++' 카테고리의 다른 글

패킷과 구조체 그리고 패딩비트  (0) 2019.05.09
[C++] STL(Standard Template Library)  (0) 2017.04.17

+ Recent posts