You are on page 1of 6

#\d 匹配一个数字字符。等价于 [0-9]

#\D 匹配一个非数字字符。等价于 [^0-9]

#提取汉字
import re
string = "hello,world!!%[545]你好 234asd 完全额。。。"
str = re.sub("[A-Za-z0-9\!\%\[\]\,\。]", "", string)
print(str)

#从字符串中提取数字
totalCount = '100abcdef'
totalCount = re.sub("\D", "", totalCount)
print(totalCount)

#提取字母字符串
import re
string = "hello,world!!%[545]爱迪生 234 世界。。。"
result = ''.join(re.findall(r'[A-Za-z]', string))
print(result)

#coding:utf-8
#author:Mitchell
import random
import re

#part1:猜数游戏,编写程序模拟猜数游戏。
#程序运行时,系统生成一个 100 以内的随机数,然后提示用户进行猜测,并根据用户输入进行必要的提示(猜对
了、太大了、太小了)
#如果猜对则提前结束程序,如果次数用完仍没有猜对,提示游戏结束并给出正确答案。
#要求用到异常处理,处理输入不是数字的情况。
x=random.randint(1,100)
remain=3
print("请你猜测一个 1-100 的整数,你一共有",remain,"次机会,加油!")
while(1):
try:
y=int(input("请输入猜测的数字:"))
except:
print("请输入一个数字!")
else:
if x==y:
print("恭喜你,猜对了!")
break
elif x>y:
remain-=1
print("猜得太小啦,你还剩",remain,"次机会!")
elif x<y:
remain-=1
print("猜得太大啦,你还剩",remain,"次机会!")
if remain==0:
print("游戏结束,正确答案是",x,"再见,respect!")
break

#part2:编写代码,读取文本文件内容并统计其中每个英文字母的出现次数,如果文件不存在则给出友好提示,
使用异常处理结构实现。
try:
#尝试打开目标文件,r 表示只读
f=open('test.txt','r')
except IOError:
print('找不到目标文件!')
pass
else:
#读取文本文件
content=f.read()
#过滤非字母
wordstring = ''.join(re.findall(r'[A-Za-z]', content))
#全部转换成大写
wordstring=wordstring.upper()
#构建字母表
AlphaList='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
#创建列表存储字母出现次数
AlphaFreq=[]
for alpha in AlphaList:
AlphaFreq.append(wordstring.count(alpha))
#一一对应打包成字典变量
result=dict(zip(AlphaList,AlphaFreq))
#打印出结果
print('{}'.format(result))

import socket
#使用 IPV4 协议,使用 UDP 协议传输数据
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定端口和端口号,空字符串表示本机任何可用 IP 地址
s.bind(('',5000))
while True:
#最多可以接收 1024 比特大小的内容
data,addr=s.recvfrom(1024)
#显示接收到的内容
print("received message:{0} from PORT {1} on
{2}".format(data.decode(),addr[1],addr[0]))
if data.decode().lower()=='bye':
break
#结束监听
s.close()

import socket
import sys
#使用 IPV4 协议,使用 UDP 协议传输数据
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#发送文本
s.sendto(sys.argv[1].encode() , ("127.0.0.1" ,5000))
#断开连接
s.close()

#coding:utf-8
#author:Mitchell
from posixpath import split
import socket
from os.path import commonprefix
#建立聊天回复字典
words={'which team is the champion?':'UATH JAZZ',
'how are you?':'Fine,thank you!',
'how old are you?':'18 forever',
'what is your name?':'Mitchell',
'which team do you like?':'UATH JAZZ!',
'bye':'Bye!'}
#服务端主机 IP 地址和端口号,空字符串表示本机任何可用 IP 地址
HOST=""
PORT=50007
#使用 IPV4 协议,使用 tcp 协议传输数据
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定端口和端口号
s.bind((HOST,PORT))
#开始监听,规定最多支持 1 个客户端连接
s.listen(1)
print('目前监听的端口号是:',PORT)
conn,addr=s.accept()
print('目前连接的 IP 地址是:',addr)
#开始聊天
while True:
#最多可以接收 1024 比特大小的内容,并解码
data=conn.recv(1024).decode()
#如果是空,退出
if not data:
break
print('接收到的内容:',data)
#尽可能猜测对方的意思
m=0
key=''
for k in words.keys():
#删除多余的空白字符
data=' '.join(data.split())
#与某个键非常接近,就直接返回
if len(commonprefix([k,data]))>len(k)*0.7:
key=k
break
#使用选择法,选择一个重合度较高的键
length=len(set(data.split())&set(k.split()))
if length>m:
m=length
key=k
#选择合适的信息进行回复
conn.sendall(words.get(key,'Sorry,can\'t find your problem! ').encode())
conn.close()

#coding:utf-8
#author:Mitchell
import socket
import sys

#服务端主机 IP 地址和端口号
HOST="127.0.0.1"
PORT=50007
#使用 IPV4 协议,使用 tcp 协议传输数据
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
#连接服务器
s.connect((HOST,PORT))
except Exception as e:
print('找不到服务器,请稍后重试!')
sys.exit()
while True:
c=input('请输入你想发送的消息:')
#发送数据,使用 UTF-8 编码成字节码
s.sendall(c.encode())
#从服务端接收数据,大小最多为 1024 比特
data=s.recv(1024)
#解码
data=data.decode()
print('收到回复:',data)
if c.lower()=='bye':
break
#关闭连接
s.close()

#coding:utf-8
#author:Mitchell
import socket
import time
#使用 IPV4 协议,使用 UDP 协议传输数据
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#服务端主机 IP 地址和端口号,空字符串表示本机任何可用 IP 地址
HOST=""
PORT=50007
#绑定端口和端口号
s.bind((HOST,PORT))
print('目前监听的端口号是:',PORT)
while True:
#最多可以接收 1024 比特大小的内容
data,addr=s.recvfrom(1024)
if not data:
break
newtime = "本地时间为 :"+time.asctime(time.localtime(time.time()))
s.sendto(newtime.encode(),addr)
#显示接收到的内容
print("received message:{0} from PORT {1} on
{2}".format(data.decode(),addr[1],addr[0]))
#结束监听
s.close()

#coding:utf-8
#author:Mitchell
import socket
import sys

#服务端主机 IP 地址和端口号
HOST="127.0.0.1"
PORT=50007
#使用 IPV4 协议,使用 UDP 协议传输数据
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
try:
#连接服务器
s.connect((HOST,PORT))
except Exception as e:
print('找不到服务器,请稍后重试!')
sys.exit()
while True:
c=input('请输入你想发送的消息:')
#发送数据,使用 UTF-8 编码成字节码
s.sendall(c.encode())
if not c:
break
#从服务端接收数据,大小最多为 1024 比特
data=s.recv(1024)
#解码
print('收到回复:',data.decode())
#关闭连接
s.close()

#coding:utf-8
#author:Mitchell
# 服务端必须满足至少三点:
# 1. 绑定一个固定的 ip 和 port
# 2. 一直对外提供服务,稳定运行
# 3. 能够支持并发
import socketserver
# 自定义类用来处理通信循环
class MyTCPhanler(socketserver.BaseRequestHandler):
def handle(self):
while True:
try:
data = self.request.recv(1024)
if len(data) == 0:
break
print('-->收到客户端的消息: ', data)
self.request.send(data.upper())
except ConnectionResetError:
break
self.request.close()
if __name__ == '__main__':
server=socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhanler)
server.serve_forever() # 链接循环

#coding:utf-8
#author:于海涛
#客户端
from socket import *
#使用 IPV4 协议,使用 UDP 协议传输数据
client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8081))
# 通信循环
while True:
sdata = input("请输入要发送的数据:")
if sdata == 'q':
break
client.send(sdata.encode('utf-8'))
data=client.recv(1024)
print(data)
client.close()

You might also like