@chengweihuang
2019-03-11T00:46:29.000000Z
字数 1421
阅读 595
未分类
from socket import *import requestsclass Ai(object):def __init__(self,sockfd):self.name = '人工智障机器人'self.nickname='无敌'self.number = '00001'self.functions = ['猜数字','聊天']self.sockfd = sockfddef run(self):self.connfd ,self.addr = self.sockfd.accept()data = '你好 我是人工智障机器人 我有这几个功能 %s'%','.join(self.functions)self.connfd.send(data.encode('utf-8'))while 1:com = self.connfd.recv(1024).decode('utf-8')if com =='猜数字':self.guess_number()elif com =='聊天':self.chat()elif com=='退出':breakelse:passdef guess_number(self):data = '猜数字 开始 请输入最大 最小值 用逗号分隔 正确答案记在心中'self.connfd.send(data.encode('utf-8'))n_min,n_max = [int(i) for i in [self.connfd.recv(1024)].decode().split(',')]avgs = (n_min+n_max)//2ans = '我猜是'+str(avgs)+'回复 大了小了 或正确'while 1:self.connfd.send(ans.encode('utf-8'))res = self.connfd.recv(1024).decode('utf-8')if res =='正确':self.connfd.send('游戏结束 请指示'.encode('utf-8'))breakelif res =='大了':n_max = avgsavgs = (n_min+avgs)//2elif res =='小了':n_min = avgsavgs = (n_max+avgs)//2else:passans = '我猜是' + str(avgs) + '回复 大了小了 或正确'def chat(self):data = '聊天开始 请输入一个话题 'self.connfd.send(data.encode('utf-8'))while True:speak = self.connfd.recv(1024).decode('utf-8')if speak =='qqq':data = '已退出 'self.connfd.send(data.encode('utf-8'))breakresp = requests.post("http://www.tuling123.com/openapi/api",data={"key": "a79fcc9fe2fa4b43948db43345d8858b", "info": speak, })resp = resp.json()self.connfd.send(resp['text'].encode())if __name__ == '__main__':sockfd = socket()sockfd.bind(('0.0.0.0',8848))sockfd.listen(5)ai = Ai(sockfd)ai.run()