導航:首頁 > 編程語言 > python模擬聊天

python模擬聊天

發布時間:2023-06-02 13:34:35

㈠ 如何用python編寫一個聊天室

一、課程介紹

1.簡介

本次項目課是實現簡單聊天室程序的伺服器端和客戶端。

2.知識點

伺服器端涉及到asyncore、asynchat和socket這幾個模塊,客戶端用到了telnetlib、wx、time和thread這幾個模塊。

3.所需環境

本次課中編寫客戶端需要用到wxPython,它是一個GUI工具包,請先使用下面的命令安裝:

$ sudo apt-get install python-wxtools

密碼為shiyanlou

4.項目效果截圖

登錄窗口

二、項目實戰(伺服器端)

1.伺服器類

首先需要一個聊天伺服器,這里繼承asyncore的dispatcher類來實現,代碼如下

class ChatServer(dispatcher):
"""
聊天伺服器
"""

def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)

def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)

2.會話類

有了伺服器類還需要能維護每個用戶的連接會話,這里繼承asynchat的async_chat類來實現,代碼如下:

class ChatSession(async_chat):
"""
負責和單用戶通信
"""

def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator(' ')
self.data = []
self.name = None
self.enter(LoginRoom(server))

def enter(self, room):
'從當前房間移除自身,然後添加到指定房間'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)

def collect_incoming_data(self, data):
'接受客戶端的數據'
self.data.append(data)

def found_terminator(self):
'當客戶端的一條數據結束時的處理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()

def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))

3.命令解釋器

現在就需要一個命令解釋器能夠解釋用戶的命令,例如登錄、查詢在線用戶和發消息等,代碼如下:

class CommandHandler:
"""
命令處理類
"""

def unknown(self, session, cmd):
'響應未知命令'
session.push('Unknown command: %s ' % cmd)

def handle(self, session, line):
'命令處理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)

4.房間

接下來就需要實現聊天室的房間了,這里我們定義了三種房間,分別是用戶剛登錄時的房間、聊天的房間和退出登錄的房間,這三種房間都有一個公共的父類,代碼如下:

class Room(CommandHandler):
"""
包含多個用戶的環境,負責基本的命令處理和廣播
"""

def __init__(self, server):
self.server = server
self.sessions = []

def add(self, session):
'一個用戶進入房間'
self.sessions.append(session)

def remove(self, session):
'一個用戶離開房間'
self.sessions.remove(session)

def broadcast(self, line):
'向所有的用戶發送指定消息'
for session in self.sessions:
session.push(line)

def do_logout(self, session, line):
'退出房間'
raise EndSession

class LoginRoom(Room):
"""
剛登錄的用戶的房間
"""

def add(self, session):
'用戶連接成功的回應'
Room.add(self, session)
session.push('Connect Success')

def do_login(self, session, line):
'登錄命令處理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)

class ChatRoom(Room):
"""
聊天用的房間
"""

def add(self, session):
'廣播新用戶進入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room. ')
self.server.users[session.name] = session
Room.add(self, session)

def remove(self, session):
'廣播用戶離開'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room. ')

def do_say(self, session, line):
'客戶端發送消息'
self.broadcast(session.name + ': ' + line + ' ')

def do_look(self, session, line):
'查看在線用戶'
session.push('Online Users: ')
for other in self.sessions:
session.push(other.name + ' ')

class LogoutRoom(Room):
"""
用戶退出時的房間
"""

def add(self, session):
'從伺服器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass

5.伺服器端完整代碼

#!/usr/bin/python
# encoding: utf-8

from asyncore import dispatcher
from asynchat import async_chat
import socket, asyncore

PORT = 6666 #埠

class EndSession(Exception):
"""
自定義會話結束時的異常
"""
pass

class CommandHandler:
"""
命令處理類
"""

def unknown(self, session, cmd):
'響應未知命令'
session.push('Unknown command: %s ' % cmd)

def handle(self, session, line):
'命令處理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)

class Room(CommandHandler):
"""
包含多個用戶的環境,負責基本的命令處理和廣播
"""

def __init__(self, server):
self.server = server
self.sessions = []

def add(self, session):
'一個用戶進入房間'
self.sessions.append(session)

def remove(self, session):
'一個用戶離開房間'
self.sessions.remove(session)

def broadcast(self, line):
'向所有的用戶發送指定消息'
for session in self.sessions:
session.push(line)

def do_logout(self, session, line):
'退出房間'
raise EndSession

class LoginRoom(Room):
"""
剛登錄的用戶的房間
"""

def add(self, session):
'用戶連接成功的回應'
Room.add(self, session)
session.push('Connect Success')

def do_login(self, session, line):
'登錄命令處理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)

class ChatRoom(Room):
"""
聊天用的房間
"""

def add(self, session):
'廣播新用戶進入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room. ')
self.server.users[session.name] = session
Room.add(self, session)

def remove(self, session):
'廣播用戶離開'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room. ')

def do_say(self, session, line):
'客戶端發送消息'
self.broadcast(session.name + ': ' + line + ' ')

def do_look(self, session, line):
'查看在線用戶'
session.push('Online Users: ')
for other in self.sessions:
session.push(other.name + ' ')

class LogoutRoom(Room):
"""
用戶退出時的房間
"""

def add(self, session):
'從伺服器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass

class ChatSession(async_chat):
"""
負責和單用戶通信
"""

def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator(' ')
self.data = []
self.name = None
self.enter(LoginRoom(server))

def enter(self, room):
'從當前房間移除自身,然後添加到指定房間'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)

def collect_incoming_data(self, data):
'接受客戶端的數據'
self.data.append(data)

def found_terminator(self):
'當客戶端的一條數據結束時的處理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()

def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))

class ChatServer(dispatcher):
"""
聊天伺服器
"""

def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)

def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)

if __name__ == '__main__':
s = ChatServer(PORT)
try:
asyncore.loop()
except KeyboardInterrupt:
print

三、項目實戰(客戶端)

完成了伺服器端後,就需要實現客戶端了,這里客戶端連接伺服器使用了telnetlib模塊。

1.登錄窗口

這里的圖形界麵包選擇了wxPython,前面有安裝說明,登錄窗口通過繼承wx.Frame類來實現,代碼如下:

class LoginFrame(wx.Frame):
"""
登錄窗口

㈡ 如何用Python編寫一個聊天室

python聊天室(python2.7版本):

暫時先給出兩種版本的,tcp+udp

都是分別運行server.py和client.py,就可以進行通訊了。

別外還有websocket版本,這個是有web界面的和基本web服務的,如果需要的話,我會把基本的代碼貼一版上來。


TCP版本:

socket-tcp-server.py(服務端):

#-*-encoding:utf-8-*-
#socket.getaddrinfo(host,port,family=0,socktype=0,proto=0,flags=0)
#根據給定的參數host/port,相應的轉換成一個包含用於創建socket對象的五元組,
#參數host為域名,以字元串形式給出代表一個IPV4/IPV6地址或者None.
#參數port如果字元串形式就代表一個服務名,比如「http」"ftp""email"等,或者為數字,或者為None
#參數family為地主族,可以為AF_INET,AF_INET6,AF_UNIX.
#參數socktype可以為SOCK_STREAM(TCP)或者SOCK_DGRAM(UDP)
#參數proto通常為0可以直接忽略
#參數flags為AI_*的組合,比如AI_NUMERICHOST,它會影響函數的返回值
#附註:給參數host,port傳遞None時建立在C基礎,通過傳遞NULL。
#該函數返回一個五元組(family,socktype,proto,canonname,sockaddr),同時第五個參數sockaddr也是一個二元組(address,port)
#更多的方法及鏈接請訪問
#Echoserverprogram
fromsocketimport*
importsys
importthreading
fromtimeimportctime
fromtimeimportlocaltime
importtraceback
importtime
importsubprocess
reload(sys)
sys.setdefaultencoding("utf8")


HOST='127.0.0.1'
PORT=8555#設置偵聽埠
BUFSIZ=1024

classTcpServer():
def__init__(self):
self.ADDR=(HOST,PORT)
try:
self.sock=socket(AF_INET,SOCK_STREAM)
print'%disopen'%PORT

self.sock.bind(self.ADDR)
self.sock.listen(5)
#設置退出條件
self.STOP_CHAT=False

#所有監聽的客戶端
self.clients={}
self.thrs={}
self.stops=[]

exceptException,e:
print"%disdown"%PORT
returnFalse

defIsOpen(ip,port):

s=socket(AF_INET,SOCK_STREAM)
try:
s.connect((ip,int(port)))
#s.shutdown(2)
#利用shutdown()函數使socket雙向數據傳輸變為單向數據傳輸。shutdown()需要一個單獨的參數,
#該參數表示s了如何關閉socket。具體為:0表示禁止將來讀;1表示禁止將來寫;2表示禁止將來讀和寫。
print'%disopen'%port
returnTrue
except:
print'%disdown'%port
returnFalse

deflisten_client(self):
whilenotself.STOP_CHAT:
print(u'等待接入,偵聽埠:%d'%(PORT))
self.tcpClientSock,self.addr=self.sock.accept()
print(u'接受連接,客戶端地址:',self.addr)
address=self.addr
#將建立的clientsocket鏈接放到列表self.clients中
self.clients[address]=self.tcpClientSock
#分別將每個建立的鏈接放入進程中,接收且分發消息
self.thrs[address]=threading.Thread(target=self.readmsg,args=[address])
self.thrs[address].start()
time.sleep(0.5)defreadmsg(self,address):
#如果地址不存在,則返回False
ifaddressnotinself.clients:
returnFalse
#得到發送消息的clientsocket
client=self.clients[address]
whileTrue:
try:
#獲取到消息內容data
data=client.recv(BUFSIZ)
except:
print(e)
self.close_client(address)
break
ifnotdata:
break
#python3使用bytes,所以要進行編碼
#s='%s發送給我的信息是:[%s]%s'%(addr[0],ctime(),data.decode('utf8'))
#對日期進行一下格式化
ISOTIMEFORMAT='%Y-%m-%d%X'
stime=time.strftime(ISOTIMEFORMAT,localtime())
s=u'%s發送給我的信息是:%s'%(str(address),data.decode('utf8'))
#將獲得的消息分發給鏈接中的clientsocket
forkinself.clients:
self.clients[k].send(s.encode('utf8'))
self.clients[k].sendall('sendall:'+s.encode('utf8'))
printstr(k)
print([stime],':',data.decode('utf8'))
#如果輸入quit(忽略大小寫),則程序退出
STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
ifSTOP_CHAT:
print"quit"
self.close_client(address)
print"alreadyquit"
break

defclose_client(self,address):
try:
client=self.clients.pop(address)
self.stops.append(address)
client.close()
forkinself.clients:
self.clients[k].send(str(address)+u"已經離開了")
except:
pass
print(str(address)+u'已經退出')


if__name__=='__main__':
tserver=TcpServer()
tserver.listen_client()

——————————華麗的分割線——————————

socket-tcp-client.py(客戶端):

#-*-encoding:utf-8-*-
fromsocketimport*
importsys
importthreading
importtime
reload(sys)
sys.setdefaultencoding("utf8")


#測試,連接本機
HOST='127.0.0.1'
#設置偵聽埠
PORT=8555
BUFSIZ=1024

classTcpClient:

ADDR=(HOST,PORT)
def__init__(self):
self.HOST=HOST
self.PORT=PORT
self.BUFSIZ=BUFSIZ
#創建socket連接
self.client=socket(AF_INET,SOCK_STREAM)
self.client.connect(self.ADDR)
#起一個線程,監聽接收的信息
self.trecv=threading.Thread(target=self.recvmsg)
self.trecv.start()

defsendmsg(self):
#循環發送聊天消息,如果socket連接存在則一直循環,發送quit時關閉鏈接
whileself.client.connect_ex(self.ADDR):
data=raw_input('>:')
ifnotdata:
break
self.client.send(data.encode('utf8'))
print(u'發送信息到%s:%s'%(self.HOST,data))
ifdata.upper()=="QUIT":
self.client.close()
printu"已關閉"
break
defrecvmsg(self):
#接收消息,如果鏈接一直存在,則持續監聽接收消息
try:
whileself.client.connect_ex(self.ADDR):
data=self.client.recv(self.BUFSIZ)
print(u'從%s收到信息:%s'%(self.HOST,data.decode('utf8')))
exceptException,e:
printstr(e)

if__name__=='__main__':
client=TcpClient()
client.sendmsg()

UDP版本:

socket-udp-server.py

#-*-coding:utf8-*-

importsys
importtime
importtraceback
importthreading
reload(sys)
sys.setdefaultencoding('utf-8')

importsocket
importtraceback

HOST="127.0.0.1"
PORT=9555
CHECK_PERIOD=20
CHECK_TIMEOUT=15

classUdpServer(object):
def__init__(self):
self.clients=[]
self.beats={}
self.ADDR=(HOST,PORT)
try:
self.sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.sock.bind(self.ADDR)#綁定同一個域名下的所有機器
self.beattrs=threading.Thread(target=self.checkheartbeat)
self.beattrs.start()
exceptException,e:
traceback.print_exc()
returnFalse

deflisten_client(self):
whileTrue:
time.sleep(0.5)
print"hohohohohoo"
try:
recvData,address=self.sock.recvfrom(2048)
ifnotrecvData:
self.close_client(address)
break
ifaddressinself.clients:
senddata=u"%s發送給我的信息是:%s"%(str(address),recvData.decode('utf8'))
ifrecvData.upper()=="QUIT":
self.close_client(address)
ifrecvData=="HEARTBEAT":
self.heartbeat(address)
continue
else:
self.clients.append(address)
senddata=u"%s發送給我的信息是:%s"%(str(address),u'進入了聊天室')
forcinself.clients:
try:
self.sock.sendto(senddata,c)
exceptException,e:
printstr(e)
self.close_client(c)
exceptException,e:
#traceback.print_exc()
printstr(e)
pass

defheartbeat(self,address):
self.beats[address]=time.time()

defcheckheartbeat(self):

whileTrue:
print"checkheartbeat"
printself.beats
try:
forcinself.clients:
printtime.time()
printself.beats[c]
ifself.beats[c]+CHECK_TIMEOUT<time.time():
printu"%s心跳超時,連接已經斷開"%str(c)
self.close_client(c)
else:
printu"checkp%s,沒有斷開"%str(c)
exceptException,e:
traceback.print_exc()
printstr(e)
pass
time.sleep(CHECK_PERIOD)

defclose_client(self,address):
try:
ifaddressinself.clients:
self.clients.remove(address)
ifself.beats.has_key(address):
delself.beats[address]
printself.clients
forcinself.clients:
self.sock.sendto(u'%s已經離開了'%str(address),c)
print(str(address)+u'已經退出')
exceptException,e:
printstr(e)
raise

if__name__=="__main__":
udpServer=UdpServer()
udpServer.listen_client()

——————————華麗的分割線——————————
socket-udp-client.py:
#-*-coding:utf8-*-

importsys
importthreading
importtime
reload(sys)
sys.setdefaultencoding('utf-8')

importsocket

HOST="127.0.0.1"
PORT=9555
#BEAT_PORT=43278
BEAT_PERIOD=5


classUdpClient(object):
def__init__(self):
self.clientsock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.HOST=HOST
self.ADDR=(HOST,PORT)
self.clientsock.sendto(u'請求建立鏈接',self.ADDR)
self.recvtrs=threading.Thread(target=self.recvmsg)
self.recvtrs.start()
self.hearttrs=threading.Thread(target=self.heartbeat)
self.hearttrs.start()

defsendmsg(self):
whileTrue:
data=raw_input(">:")
ifnotdata:
break
self.clientsock.sendto(data.encode('utf-8'),self.ADDR)
ifdata.upper()=='QUIT':
self.clientsock.close()
break

defheartbeat(self):
whileTrue:
self.clientsock.sendto('HEARTBEAT',self.ADDR)
time.sleep(BEAT_PERIOD)

defrecvmsg(self):
whileTrue:
recvData,addr=self.clientsock.recvfrom(1024)
ifnotrecvData:
break
print(u'從%s收到信息:%s'%(self.HOST,recvData.decode('utf8')))if__name__=="__main__":
udpClient=UdpClient()
udpClient.sendmsg()

㈢ 利用Python語言,設計一個網路聊天程序,實現網路通信或者文件傳輸

這個是很有意思,也簡單的話題 。你可以使用twisted, 或者是socket, 實現。 如果想優美些可以用stackless,也可以用greenlet。

最簡單的辦法是使用內置的httpserver,通過多線程socketserver,和simplehttpserver實現簡單的交互。

㈣ 怎麼利用Python做一個即時通信軟體呢,類似於QQ,能實現基本的聊天和文件傳輸功能

這個基本的聊天就是最基本的socket操作,python界面方面比較弱勢,如果不用第三方庫的話。

㈤ python可以做哪些有趣的事情

1. Python3 實現色情圖片識別

2. Python3 圖片隱寫術

3. 200 行 Python 代碼實現 2048

4. Python實現3D建模工具

5. 使用 Python 定製詞雲

6. Python3 智能裁切圖片

7.微信變為聊天機器人

8. 使用 Python 解數學方程

9. 使用 Python 創建照片馬賽克

10. Python 基於共現提取《釜山行》人物關系

11. Python 氣象數據分析:《Python 數據分析實戰》

12. NBA常規賽結果預測:利用Python進行比賽數據分析

13. Python 的循環語句和隱含波動率的計算

14. K-近鄰演算法實現手寫數字識別系統

15. 數獨游戲的 Python 實現與破解

16. 基於 Flask 與 MySQL 實現番劇推薦系

17. Python 實現英文新聞摘要自動提取

18. Python 解決哲學家就餐問題

19. Ebay 在線拍賣數據分析

20. 神經網路實現人臉識別任務

21. 使用 Python 解數學方程

22. Python3 實現火車票查詢工具

23. Python 實現埠掃描器

24. Python3 實現可控制肉雞的反向Shell

25. Python 實現 FTP 弱口令掃描器

26. 基於PyQt5 實現地圖中定位相片拍攝位置

27. Python實現網站模擬登陸

28.Python實現簡易區域網視頻聊天工具

29. 基於 TCP 的 python 聊天程序

30. Python3基於Scapy實現DDos

31. 高德API + Python 解決租房問題

32. 基於 Flask 與 RethinkDB 實現TODO List

㈥ 關於python編程,寫一個聊天室中間出現的問題

知道無大神,屌絲一大群

㈦ 花了2萬多買的Python70個項目,現在分享給大家,練手進廠靠它了

前言:

不管學習哪門語言都希望能做出實際的東西來,這個實際的東西當然就是項目啦,不用多說大家都知道學編程語言一定要做項目才行。

這里整理了70個Python實戰項目列表,都有完整且詳細的教程,你可以從中選擇自己想做的項目進行參考學習練手,你也可以從中尋找靈感去做自己的項目。

1、【Python 圖片轉字元畫】

2、【200行Python代碼實現2048】

3、【Python3 實現火車票查詢工具】

4、【高德API+Python解決租房問題 】

5、【Python3 色情圖片識別】

6、【Python 破解驗證碼】

7、【Python實現簡單的Web伺服器】

8、【pygame開發打飛機 游戲 】

9、【Django 搭建簡易博客】

10、【Python基於共現提取《釜山行》人物關系】

11、【基於scrapy爬蟲的天氣數據採集(python)】

12、【Flask 開發輕博客】

13、【Python3 圖片隱寫術】

14、【Python 實現簡易 Shell】

15、【使用 Python 解數學方程】

16、【PyQt 實現簡易瀏覽器】

17、【神經網路實現手寫字元識別系統 】

18、【Python 實現簡單畫板】

19、【Python實現3D建模工具】

20、【NBA常規賽結果預測——利用Python進行比賽數據分析】

21、【神經網路實現人臉識別任務】

22、【Python文本解析器】

23、【Python3 & OpenCV 視頻轉字元動畫】

24、【Python3 實現淘女郎照片爬蟲 】

25、【Python3實現簡單的FTP認證伺服器】

26、【基於 Flask 與 MySQL 實現番劇推薦系統】

27、【Python 實現埠掃描器】

28、【使用 Python 3 編寫系列實用腳本】

29、【Python 實現康威生命 游戲 】

30、【川普撞臉希拉里(基於 OpenCV 的面部特徵交換) 】

31、【Python 3 實現 Markdown 解析器】

32、【Python 氣象數據分析 -- 《Python 數據分析實戰》】

33、【Python實現鍵值資料庫】

34、【k-近鄰演算法實現手寫數字識別系統】

35、【ebay在線拍賣數據分析】

36、【Python 實現英文新聞摘要自動提取 】

37、【Python實現簡易區域網視頻聊天工具】

38、【基於 Flask 及爬蟲實現微信 娛樂 機器人】

39、【Python實現Python解釋器】

40、【Python3基於Scapy實現DDos】

41、【Python 實現密碼強度檢測器】

42、【使用 Python 實現深度神經網路】

43、【Python實現從excel讀取數據並繪製成精美圖像】

44、【人機對戰初體驗:Python基於Pygame實現四子棋 游戲 】

45、【Python3 實現可控制肉雞的反向Shell】

46、【Python打造漏洞掃描器 】

47、【Python應用馬爾可夫鏈演算法實現隨機文本生成】

48、【數獨 游戲 的Python實現與破解】

49、【使用Python定製詞雲】

50、【Python開發簡單計算器】

51、【Python 實現 FTP 弱口令掃描器】

52、【Python實現Huffman編碼解壓縮文件】

53、【Python實現Zip文件的暴力破解 】

54、【Python3 智能裁切圖片】

55、【Python實現網站模擬登陸】

56、【給Python3爬蟲做一個界面.妹子圖網實戰】

57、【Python 3 實現圖片轉彩色字元】

58、【自聯想器的 Python 實現】

59、【Python 實現簡單濾鏡】

60、【Flask 實現簡單聊天室】

61、【基於PyQt5 實現地圖中定位相片拍攝位置】

62、【Python實現模板引擎】

63、【Python實現遺傳演算法求解n-queens問題】

64、【Python3 實現命令行動態進度條】

65、【Python 獲取掛號信息並郵件通知】

66、【Python實現java web項目遠端自動化更新部署】

67、【使用 Python3 編寫 Github 自動周報生成器】

68、【使用 Python 生成分形圖片】

69、【Python 實現 Redis 非同步客戶端】

70、【Python 實現中文錯別字高亮系統】

最後:

以上項目列表希望可以給你在Python學習中帶來幫助~

獲取方式:轉發 私信「1」

閱讀全文

與python模擬聊天相關的資料

熱點內容
情人節網站源碼 瀏覽:305
設備管理命令行 瀏覽:726
吃哺乳期的電影 瀏覽:190
把加密zip變成文件夾 瀏覽:213
linuxrecv阻塞 瀏覽:46
java模擬cookie 瀏覽:175
主角變身女收女的變百小說 瀏覽:758
粉筆教育app從哪裡看做過的題 瀏覽:391
app數據包在哪裡找到 瀏覽:923
百煉成仙綠帽改編1-11 瀏覽:109
女主和一對雙胞胎兄弟 瀏覽:437
刀劍神域小說TXT 瀏覽:1000
php獲取文件地址 瀏覽:578
linuxsed替換字元 瀏覽:413
如何填寫國家反詐中心app注冊使用 瀏覽:792
日本影視網站 瀏覽:933
伺服器點亮埠以後有什麼特徵 瀏覽:980
51單片機定時器pwm 瀏覽:685
民國修真 瀏覽:386
php數組作為參數傳遞 瀏覽:991