python寫機器人程序_用Python寫的一個多線程機器人聊天程序

本人是從事php開發的, 近來想通過php實現即時通訊(兼容windows)。后來發現實現起來特別麻煩, 就想到python。聽說這家伙在什么地方都能發揮作用。所以想用python來做通訊模塊。。。所以主要學習pythonn的多線程和tcp連接。

但是沒有用過python, 所有在學習python的同時寫個小小的程序 -》 和機器人聊天

本程序機器人由【圖靈機器人?http://www.tuling123.com】提供, 把編寫的例子發了出來供初學python的朋友們學習和熟悉。

注意:python版本必須為3.x +, 不兼容2.x版本的python

文件列表:

main_server.py: 服務端程序,用于接收客戶端的信息, 并返回Jinko回答的話

# tcp server

import socket;

import time;

import threading;

from JinkoRobot import *;

#應用程序入口類

class ApplicationServer:

#構造函數初始化 socket

def __init__(self, host="localhost", port=8005):

self.connList = [];

self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);

self.socket.bind((host, port));

self.socket.listen(100);

print("我是Jinko, 我來自[圖靈機器人:http://www.tuling123.com]");

print("");

print("趕緊打開客戶端和我聊天吧!");

self.accept();

#多線程接受用戶請求

def accept(self):

while True:

connection, address = self.socket.accept();

# print('connect')

thread = ChatThread(connection);

thread.start();

#聊天線程

class ChatThread(threading.Thread):

def __init__(self, conn):

threading.Thread.__init__(self);

self.__connection = conn;

def run(self):

while True:

try:

recv = self.__connection.recv(8192);

except:

break;

# print("收到:" + recv.decode('utf-8'))

rebot = JinkoRobot();

rebot.listenFor(recv.decode('utf-8'));

answer = rebot.answer();

# print('say:' + answer)

self.__connection.send(answer.encode('utf-8'));

ApplicationServer();

main_client.py: 客戶端程序, 用于和Jinko發起聊天

import socket;

import time;

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM);

print("正在和Jinko連線...");

sock.connect(('localhost', 8005));

print("");

while True:

speak = input("和Jinko說點什么:");

if speak == "quit":

break;

if speak == "":

continue;

# print("發送中..." + "("+ speak +")")

sock.send(speak.encode('utf-8'));

# print("已發送")

print("Jinko在思考...");

answer = sock.recv(8192);

print("Jinko回復你:" + answer.decode('utf-8'));

print("");

sock.close();

JinkoRobot.py: 它就是Jinko啦啦啦~~

#Jinko Robot

import json;

import urllib.request;

import urllib.parse;

class JinkoRobot:

__answer = '';

def __init__(self):

pass;

#傾聽話語

def listenFor(self, string):

self.__answer = self.thinking(string);

# 思考著

def thinking(self, string):

says = urllib.parse.quote_plus(string);

f = urllib.request.urlopen("http://www.tuling123.com/openapi/api?key=4bc32d41c10be18627438ae45eb839ac&info=" + says);

json_str = f.read();

thinkdata = json.loads(json_str.decode('utf-8'));

f.close();

if(thinkdata['code'] > 40000 and thinkdata['code'] < 40010):

return "今天Jinko被你問得有點累了, 過會再問吧!";

if(thinkdata['code'] == 200000):

return thinkdata['text'] + ", 猛戳這里>>" + thinkdata['url'];

if(thinkdata['code'] == 302000) :

info = thinkdata['text'];

for content in thinkdata['list']:

info += "\n\n>" + content['article'] \

+ " 來源于" + content['source'] \

+ " 詳細信息請猛戳這里>>" + content['detailurl'];

return info;

if(thinkdata['code'] == 305000):

info = thinkdata['text'];

for key in thinkdata['list']:

info += "\n\n>" + key + ": 車次>" + content['trainnum'] \

+ " 從" + content['start'] + "到" + content['terminal'] \

+ " 發車時間:" + content['starttime'] \

+ " 到達時間:" + content['endtime'] \

+ " 詳細信息請猛戳這里>>" + content['detailurl'];

return info;

return thinkdata['text'];

#和你交流回答

def answer(self):

return self.__answer;

運行效果圖:

最后我想說下, 我只是python的初學者,沒啥python經驗哈

我最近用Python寫了一個算法,不需要寫任何規則就能自動識別一個網頁的內容

我最近用Python寫了一個算法,不需要寫任何規則就能自動識別一個網頁的內容,目前測試了300多個新聞網站的新聞頁,都能準確識別

用Python寫了一個postgresql函數,感覺很爽

用Python寫了一個postgresql函數,感覺很爽 CREATE LANGUAGE plpythonu; postgresql函數 CREATE OR REPLACE FUNCTION myfu ...

使用itchat實現一個微信機器人聊天回復功能

近看到好多群里都有一個@機器人的功能,挺有趣的,想自己也玩下,就通過百度一點點實現,在這總結一下整個從無到有的過程. 首先,要知道itchat,它是Python寫的,所以想要實現這個機器人的功能,需要 ...

python寫的一個集合

起因:原本打算用python寫一個搶火車票的腳本.在那 期間遇見各種瀏覽器驅動失敗的節奏....打算先緩一下 然后就去寫集合了. 0x01 源碼: # -*- coding:'utf-8' -*- # ...

試著用c寫了一個多線程的同步

在Java中寫多線程相關的程序簡單很多,在多線程中需要同步的時候,使用synchronized就行了. 最近學習c的多線程與同步,感覺實現起來,要寫的代碼比較多一些,這也許是因為java封裝的比較好吧 ...

python socket編程 實現簡單p2p聊天程序

目標是寫一個python的p2p聊天的項目,這里先說一下python socket的基礎課程 一.Python Socket 基礎課程 Socket就是套接字,作為BSD UNIX的進程通信機制,取后 ...

socket實例C語言:一個簡單的聊天程序

我們老師讓寫一個簡單的聊天軟件,并且實現不同機子之間的通信,我用的是SOCKET編程.不廢話多說了,先附上代碼: 服務器端server.c #include #incl ...

使用Python寫的第一個網絡爬蟲程序

今天嘗試使用python寫一個網絡爬蟲代碼,主要是想訪問某個站點,從中選取感興趣的信息,并將信息依照一定的格式保存早Excel中. 此代碼中主要使用到了python的以下幾個功能,因為對python不 ...

10分鐘用Python告訴你兩個機器人聊天能聊出什么火花

欲直接下載代碼文件,關注我們的公眾號哦!查看歷史消息即可! 現在不是講各種各樣的人工智能嘛,AI下棋,AI客服,AI玩家--其實我一直很好奇,兩個AI碰上會怎樣,比如一起下棋,一起打游戲-- 今天做個 ...

隨機推薦

PRINCE2風險模塊

我們前幾個節學習了PRINCE2七大主題的商業論證.組織.質量和計劃,今天我們開展對于風險模塊的講解. 風險:目的是識別.評估和控制不確定性,從而提高項目的成功率.PRINCE2對風險登記冊進行了詳細 ...

sqlserver同步后在不重新初始化快照的情況下新增表

在已有事務復制中,時長需要新增表.索引,這些變更時不會同步到從庫中.如果采用默認的設置,每次都需要重新初始化快照,從庫重新應用快照和未執行的同步命令,這顯然是無法在線上實踐的方法.另一種 ...

&lpar;一&rpar;win7下cocos2d-x 21 &plus; vs2010

1.下載SDK http://cocos2d.cocoachina.com/download,我下載2.1版本,cocos2d-2.1rc0-x-2.1.2-hotfix.zip @ Apr.08, ...

MVC - 布局

布局類似于APSX視圖的母版頁 用的是Razor的語法 創建布局 布局頁面默認放在Shared目錄 有幾個自動生成的cshtml文件 刪除它們 然后創建一個視圖 命名為MyLayOut 取消勾選使用母 ...

css-文本及其他

css7-文本和其他 text-align行內元素對齊方式,值為 左/中/右 對齊:left/right/center.test{text-align:cen ...

ArrayList與LinkedList時間復雜度之對比

package ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections ...

getReadableDatabase 和 getWritableDatabase的區別

(1)getWritableDatabase()方法以讀寫方式打開數據庫.一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,此時用getWritableDatabase()打開數據庫就會出錯. (2) ...

Linux系統一些常用命令(持續增加)

這些命令什么的全是從網上找的,防止忘記,留下來備忘 1.linux服務器如何從另一臺服務器拷東西:可以用scp命令scp user@remote.machine:/remote/path /local ...

2018&quot&semi;百度之星&quot&semi;程序設計大賽 - 資格賽hdu6349三原色(最小生成樹)

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6349 題目: 三原色圖 Time Limit: 1500/1000 MS (Java/Others)? ...

golang string int int64轉換

#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 6 ...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259989.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉] 前端中的MVC

MVC是一種設計模式&#xff0c;它將應用劃分為3個部分&#xff1a;數據&#xff08;模型&#xff09;、展現層&#xff08;視圖&#xff09;和用戶交互&#xff08;控制器&#xff09;。其中&#xff1a; M - MODEL&#xff08;模型&#xff09; V - VIEW&#xff08;視圖&…

ipoo3可以用鴻蒙,iqooneo3支持無線充電嗎_iqooneo3可以無線充電嗎

iqoo neo3在不高的價格上還保證了自己的品質&#xff0c;有很高的性能&#xff0c;很不錯的屏幕。那么這款手機可以支持無線充電嗎&#xff1f;小編為大家介紹關于iqoo neo3的充電方面。1.iqoo neo3可以支持無線充電嗎iQOO Neo3 配備了 44W 超級閃充&#xff0c;屬于小刀&#…

紅帽Linux故障定位技術詳解與實例(1)

紅帽Linux故障定位技術詳解與實例(1) 2011-09-28 14:26 圈兒 BEAREYES.COM 我要評論(0) 字號&#xff1a;T | T在線故障定位就是在故障發生時, 故障所處的操作系統環境仍然可以訪問&#xff0c;故障處理人員可通過console, ssh等方式登錄到操作系統上&#xff0c;在shell上執行…

u2020 華為_華為5G網管U2020常用MML命令(很實用)

激活小區ACT NRCELL:;ACT NRDUCELL:;去激活小區DEA NRCELL:;DEA NRDUCELL:;查詢小區靜態信息LST NRCELL:;LST NRDUCELL:;查詢小區動態信息DSP NRCELL:;DSP NRDUCELL:;修改幀偏置MOD GNODEBPARAM:FRAMEOFFSET70728;修改子幀配比、時隙結構MOD NRDUCELL:NRDUCELLID0,DUPLEXMODECE…

Struts2中過濾器,攔截器,監聽器他們之間有什么區別?

1、攔截器是基于java反射機制的&#xff0c;而過濾器是基于函數回調的。2、過濾器依賴與servlet容器&#xff0c;而攔截器不依賴與servlet容器。3、攔截器只能對Action請求起作用&#xff0c;而過濾器則可以對幾乎所有請求起作用。4、攔截器可以訪問Action上下文、值棧里的對象…

pdf在html中加載不出來,在網頁中打開顯示PDF

在這里呢&#xff0c;本站僅為大家講解在網頁中顯示PDF文件的簡單方法&#xff0c;注意&#xff0c;是簡單方法&#xff0c;同時&#xff0c;本站已驗證過如下的相關代碼&#xff0c;測試已通過。當然&#xff0c;有的朋友可能會問&#xff0c;是否能達到像百度文庫那樣在網頁中…

hikaril連接sql2000_hikari連接池解析(版本:HikariCP-2.5.1.jar)

maxLifetime參數maxLifetime參數必須小于數據庫的time_wait,默認是1800000&#xff0c;即30分鐘。如果設置為0&#xff0c;表示存活時間無限大。如果不等于0且小于30秒則會被重置回30分鐘。HikariConfig類中有該參數的校驗規則。HikariPool類中&#xff0c;當我們初始化連接池的…

app開發歷程————Android程序解析服務器端的JSON格式數據,顯示在界面上

上一篇文章寫的是服務器端利用Servlet 返回JSON字符串&#xff0c;本文主要是利用android客戶端訪問服務器端鏈接&#xff0c;解析JSON格式數據&#xff0c;放到相應的位置上。 首先&#xff0c;android程序的布局文件main.xml 1 <LinearLayout xmlns:android"http://s…

Android IOS WebRTC 音視頻開發總結(八十七)-- WebRTC中丟包重傳NACK實現分析

Android IOS WebRTC 音視頻開發總結&#xff08;八十七&#xff09;-- WebRTC中丟包重傳NACK實現分析 本文主要介紹WebRTC中丟包重傳NACK的實現&#xff0c;作者&#xff1a;weizhenwei &#xff0c;文章最早發表在編風網&#xff0c;微信ID&#xff1a;befoio 支持原創&#x…

如何去除TD之間的空隙

table{border-collapse:collapse;}轉載于:https://www.cnblogs.com/passer1991/archive/2013/02/27/2935967.html

android切換到上個頁面,Android 返回上一個界面刷新數據

有些界面需要返回上一個界面刷刷新數據,再此做個記錄.首先startActivityForResult進行Actvity進行跳轉,這是跳轉前的界面.// 通過 startActivityForResult() 啟動 ActivityBIntent intent new Intent(getActivity(), NoticeActivity.class);startActivityForResult(intent, 1)…

composer設置代理_composer 設置代理

Docker registry V2部署私有Docker Registry 搭建 Insecure Registry 修改Registry server上的Docker daemon的配置,為DOCKER_OPTS增加–insecure ...css中的position&colon;relative和absolute 屬性語法: position : static | absolute | fixed | relative 取值: static :…

為網格布局圖片打造的超炫 CSS 加載動畫

今天&#xff0c;我想與大家分享一些專門為網格布局的圖像制作的很酷的 CSS 加載動畫效果。您可以把這些效果用在你的作品集&#xff0c;博客或任何你想要的網頁中。設置很簡單。我們使用了下面這些工具庫來實現這個效果&#xff1a; Normalize.css 來替代傳統的 CSS 復位&…

HTML多選框滾動條,《HTM單選.doc

《HTM單選1. 下面標記中&#xff0c;( )在標記的位置添加一個回車符。【選擇一項】A. B. C. D. 2. 要實現以下功能&#xff1a;在網頁中插入一個圖片joke11.gif,使用者通過單擊該圖片&#xff0c;連接到joke11.htm上去。下面的HTML代碼&#xff0c;( )是正確的。【選擇一項】A…

python時間處理模塊有哪些_Python模塊之時間處理

time 模塊>>> import time>>> dir(time)[__doc__, __name__, __package__, accept2dyear, altzone, asctime, clock, ctime, daylight, gmtime, localtime, mktime, sleep, strftime,strptime, struct_time, time, timezone, tzname]包含的變量:timezone -- …

wel

歡迎來到mathant.com 這個網站是什么 這個網站是我搭建在阿里云vps上的個人網站。目前的用途是充當個人博客和云存儲&#xff0c;當然它的功能不止如此。我會在以后的日子里完善他&#xff0c;希望他能變得更好。目前我在主機上只搭建了這個個人博客和一個ftp服務器。這個網站采…

php 安裝rabbitmq擴展無報錯版

需要安裝rabbitmq-c&#xff0c;rabbitmq-c是一個用于C語言的&#xff0c;與AMQP server進行交互的client庫。下載了v0.5.2版本(https://github.com/alanxz/rabbitmq-c/releases/download/v0.5.2/rabbitmq-c-0.5.2.tar.gztar xvf rabbitmq-c-0.5.2.tarcd rabbitmq-c-0.5.2autor…

ImageMagick 打水印支持透明度設置

convert 35021021120924162418300.jpg DD.png -geometry 60002048 -compose dissolve -define compose:args50 -composite -quality 95 35021021120924162418300_res.jpg轉載于:https://www.cnblogs.com/mfryf/archive/2013/03/04/2943209.html

spring mvc使用html頁面,使用Spring MVC的純HTML頁面應用程序

在Spring MVC所有的請求經過FrontController - DispatcherServlet的有你需要告訴Spring allowe JSP和HTML都在你的情況例dispatcher-servlet.xml:xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.springframework.org/schema/p"x…

python win+r時不成功_Win與R(不使用Anaconda的情況下)

配置R的路徑信息&#xff1a;Path&#xff1a;添加R.dll的路徑 如&#xff1a;E:\software\R\R-3.5.1\bin\x64R_HOME:R的安裝路徑 如&#xff1a;E:\software\R\R-3.5.1\binR_USER:R的使用路徑 如&#xff1a;E:\software\R\R-3.5.1\bin\x64pip install rpy2在win下安裝失敗&am…