python入门(第7节实践课---UDP通讯+Fraction 函数+爬虫+正则表达式)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jjsjsjjdj/article/details/102765298

实验1

UDP通信软件,向125.220.66.140:5003 发送你的学号,然后在你的电脑上UDP5003端口上会收到一个字符串,将这个字符串发送回125.220.66.140:5003 ,你会收到 是否成功。你可以通过http://125.220.66.140/udp1.txt 查看 是否成功的发送成功

import socket

#发送
def fun1(txt):
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  #申请套接字
    addr=("125.220.66.140",5003)           #发送地址(IP地址+端口号)
    s.sendto(txt.encode("UTF-8"),addr)   
                  
#2.接收
def fun2():
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.bind(("125.220.66.146",5003))        #绑定接收端口
    data,addr=s.recvfrom(2048)  #接收消息和发送方的地址
    data=data.decode() #解码
    return data


txt="1750300142"
fun1(txt)
data=fun2()
fun1(data)

第二题:实验2(要提交数据)

1.第一小题

如果你的学号末尾两位是p,另n=100+p,计算 1/1!-1/2!+1/3!-1/4!+…-((-1)^n)/(n!)的值(注意:要保留分数,不能用浮点数计算),将分子和分母相加,得到的整数,作为第一行的值。

from fractions import Fraction as Fra 

def SUM(n):
    x=1
    flag=1
    SUM=0
    for i in range(1,100+n+1):  
        x*=i*flag
        fenshu=Fra(1,x)
        flag*=-flag
        SUM+=fenshu
    return SUM
        
def  split(SUM):
    string_list=str(SUM).split("/")
    int_list=list(map(int,string_list))
    
    Split_SUM=sum(int_list)
    return Split_SUM

x=int(input("请输入学号的最后两位"))
SUM=SUM(x)
Split_SUM=split(SUM)
print("结果为",Split_SUM)

2.第二小题

计算 (1+1/2+1/3+…+1/n)^2 +(1/2+1/3+…+1/n)^2 +(1/3+…+1/n)^2+…+ (1/n)^2的值,将分子分母加起来得到的整数作为提交文件第二行的值

#第2小题

from fractions import Fraction as Fra

def SUM(n):
    sumi=0
    SUM=0
    for i in range(n+100,0,-1):   #使用倒序遍历 逆向计算
        xi=Fra(1,i)           #()求和
        sumi+=xi              
        
        k=sumi**2            # 整体求和
        SUM+=k
    return SUM

def  split(SUM):
    string_list=str(SUM).split("/")        #拆分字符串
    int_list=list(map(int,string_list))    #转化为int的列表
    Split_SUM=sum(int_list)                #分子分母求和
    return Split_SUM

x=int(input("请输入学号的最后两位"))
SUM=SUM(x)
Split_SUM=split(SUM)
print("结果为",Split_SUM)

实验3

在http://125.220.66.144/ 中你会发现1.txt,2.txt,…49.txt,
如果你在外网,请访问http://111.231.9.47/pythoncourse/experiment/aff/ex1026/
在这49个txt文件中含有很多数字,如果你的学号末尾两位是p,计算在这49个文件中出现p的次数
,出现的次数作为提交文件的第三行


import requests
from bs4 import BeautifulSoup
import re


#1.获取文本
def Get_TextContent():
    base="http://111.231.9.47/pythoncourse/experiment/aff/ex1026/"  #基础地址
    textcontent=""       
    for i in range(1,50):             #访问所有文件
        url=base+str(i)+".txt"        #获取每一个文件的地址
        r=requests.get(url)           #发送请求
        html=r.text.encode(r.encoding).decode("GBK")#解析网页    
        texti=BeautifulSoup(html,"lxml").text      #获取text文件内容   
        textcontent+=texti                         #将text文件内容粘连在一起
        
    return textcontent                  #返回文本

#2.统计数目
def Find_Sno_Counts(Sno,textcontent):
    
    Sno_list=re.findall(Sno,textcontent) #在文本中找自己的学号
    counts=len(Sno_list)                 #统计数目
    return counts



Sno=input("请输入学号的最后两位")
textcontent=Get_TextContent()
counts=Find_Sno_Counts(Sno,textcontent)
print("文本中出现%s的次数为%d次:"%(Sno,counts))

猜你喜欢

转载自blog.csdn.net/jjsjsjjdj/article/details/102765298