Python实验报告

Python 实验报告

实验一

  1. 编写程序,生成包含1000个0~100的随机数,并统计每个元素的出现次数
import random as r
dict={}
for key in [r.randint(0,100) for t in range(1000)]:
    dict[key]=dict.get(key,0)+1
print(dict)
  1. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并生成结果

    法一:

    print(sorted([r.randint(1,10)for i in range(10)])+sorted([r.randint(1,10)for w in range(10)],reverse=True))
    

    法二:

    a=[r.randint(1,10)for i in range(20)]
    print(sorted(a[:10])+sorted(a[10:],reverse=True))
    

实验二

  1. 输出所有由1,2,3,4这四个数字组成的素数,并且每个数字在素数中只出现一次。
import itertools as t

def check(num):
	for i in range(2,num):
		if num%i==0:
			return False
	return True

list1=[1,2,3,4]
List=list(t.permutations(list1,4))
list2=[]
for i in List:
	a=0
	for t in i:
		a=a*10+t
	list2.append(a)

for i in list2:
	if check(i)==True:
		print(i)
  1. 有一段文字,其中有一单词重复两次,检查重复的单词并只保留一个

    import re
    temp='This is is a desk'
    a=re.compile(r'((\w+)(\s+\1){1,}\b)')
    MR=a.search(MR.group(1),temp)
    print(temp)
    
    

实验三

  1. 分别统计大写字母,小写字母,数字,以及其他字符的个数,并以元组的形式返回

    def check(temp):
        a,b,c,d=0,0,0,0
        for i in temp:
            if i.isdigit():
                a+=1
            elif i.islower():
                b+=1
            elif i.isupper():
                c+=1
            else:
                d+=1
    	print('/(a,b,c,d/)')
    if __name__=='__main__':
        i=input('请输入需要检查的字符串')
        check()
    

实验四(1)

  1. 从文件“示例.xls”中的名单之中进行抽奖,要求每次抽奖两人,并且这两个人不能来自同一个单位,抽完不放回

    import random
    from tkinter import *
    import threading
    import xlrd
    import os
    from tkinter import messagebox as msgbox
    import pandas as pd
    
    #文件路径
    filename=''
    file=pd.read_excel(filename)
    data=file.values
    a=[]
    b=[]
    c=[]
    d=dict()
    for s in data:
        a.append(s[0])
        d[s[1]]=s[0]
        b.append(s[1])
    n=len(b)
    cnt=0
    while(1):
        cnt+=1
        if cnt>n//2:
            break
        if input('第{0}次抽奖:'.format(cnt))=='y':
            x=random.choice(b)
            y=random.choice(b)
            while y==x or d.get(x)==d.get(y):
                y=random.choice(b)
            print('第{0}次中奖的人为:{1},{2}'.format(cnt,x,y))
            b.remove(x)
            b.remove(y)
    

实验四(2)

  1. 在实验四(1)的基础上添加界面

    import random as r
    from tkinter import *
    import os
    import threading
    import pandas as pd
    from tkinter import messagebox as msgbox
    workplace, name, d = [], [], dict()
    def File():
        #文件路径
        filename = os.getcwd() + '\示例.xls'
        file = pd.read_excel(filename)
        data = file.values
        for s in data:
            workplace.append(s[0])
            d[s[1]] = s[0]
            name.append(s[1])
    root = Tk()
    class lottery:
        def __init__(self) -> None:
            self.__num1, self.__num2 = 0, 0
            File()
            self.root = root
            self.msgbox = msgbox
            self.root.geometry("800x600+280+80")
            self.root.title("抽奖小程序")
            self.button_start = Button(self.root, text="开始抽奖", width=6, command=self.start)
            self.button_stop = Button(self.root, text="结束抽奖", width=6, command=self.stop)
            self.label_str = StringVar()
            self.label_str.set("抽奖马上开始了")
            self.label_winner = Label(self.root, font=("宋体", 20), width=20, height=30, fg="Blue", textvariable=self.label_str)
            self.label_winner.pack()
            self.button_start.place(relx=0.2, rely=0.7)
            self.button_stop.place(relx=0.7, rely=0.7)
            self.ready = 0
            self.root.mainloop()
        def draw(self):
            print('开始滚动显示中将人信息')
            while self.ready:
                index_num1 = r.choice(name)
                index_num2 = r.choice(name)
                while index_num1 == index_num2 or d.get(index_num1) == d.get(index_num2):
                    index_num2 = r.choice(name)
                self.__num1, self.__num2 = name.index(index_num1), name.index(index_num2)
                winner = d.get(index_num1) + index_num1 + '\n' + d.get(index_num2) + index_num2
                self.label_str.set(winner)
            print('中奖的人是' + winner)
            self.msgbox.showinfo('中奖了', '恭喜' + '\n' + winner + '\n' + '您中奖了')
        def start(self):
            print('开始抽奖')
            self.ready = 1
            self.thread = threading.Thread(target=self.draw, args=())
            self.thread.setDaemon(True)
            self.thread.start()
        def stop(self):
            print('抽奖结束')
            global winner
            self.ready = 0
            name.pop(self.__num1)
            name.pop(self.__num2)
    if __name__ == '__main__':
        Lottery=lottery()
    

实验六

  1. 使用两台电脑之间的ip地址实现通信(消息互发)

    import socket
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 使用ipconfig获取本机的IP地址
    ip=''
    s.bind(('',5000))
    while True:
        data,addr=s.recvfrom(1024)
        print('{0}'.format(data.decode(),addr[1],addr[0]))
        a = input("请输入:")
        s.sendto(a.encode(), (ip, 5000))
        if data.decode().lower()=='bye':
            break
    s.close()
    

实验七

爬虫,任何东西都可以,并保存到文件

  1. 爬猫咪的文件

    import urllib.request
    response=urllib.request.urlopen("https://placekitten.com/500/600")
    cat_img=response.read()
    
    with open('cat_500_600.jpg','wb') as f:
        f.write(cat_img)
    
  2. 有道翻译 q!退出查询

    import urllib.request
    import urllib.parse
    import json
    import time
    
    while True:
        content=input('输入q!退出程序'+'\n'+'请问需要输入的内容:'+'\n')
        if content=='q!':  
            break
        From='AUTO'
        To='AUTO'
        url="https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    
        data={}
        data['i']=content
        data['from']=From
        data['to']=To
        data['smartresult']='dict'
        data['client']='fanyideskweb'
        data['salt']='16326332406052'
        data['sign']='3c2a96a52cee4b924b8912cde825a625'
        data['lts']='1632633240605'
        data['bv']='5f70acd84d315e3a3e7e05f2a4744dfa'
        data['doctype']='json' 
        data['version']='2.1'
        data['keyfrom']='fanyi.web'
        data['action']='FY_BY_REALTlME'
    
        data=urllib.parse.urlencode(data).encode('utf-8')
    
        
        req=urllib.request.Request(url,data)
        req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36')
        response=urllib.request.urlopen(req)
        html=response.read().decode('utf-8')    #返回值类型 string
    
    
        target=json.loads(html)
        
        print("查询的结果为:%s"%target['translateResult'][0][0]['tgt'])
    
  3. 爬取网页(单纯的HTML源码)

    import urllib.request as req
    
    #url之中填入需要爬取网页的网址,建议学校官网
    url=''
    with open('test.html','wb') as f:
        f.write(req.urlopen(url).read().decode('utf-8'))
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值