Python 实验报告
实验一
- 编写程序,生成包含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)
-
编写程序,生成包含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,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)
-
有一段文字,其中有一单词重复两次,检查重复的单词并只保留一个
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)
实验三
-
分别统计大写字母,小写字母,数字,以及其他字符的个数,并以元组的形式返回
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)
-
从文件“示例.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)的基础上添加界面
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()
实验六
-
使用两台电脑之间的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()
实验七
爬虫,任何东西都可以,并保存到文件
-
爬猫咪的文件
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)
-
有道翻译 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'])
-
爬取网页(单纯的HTML源码)
import urllib.request as req #url之中填入需要爬取网页的网址,建议学校官网 url='' with open('test.html','wb') as f: f.write(req.urlopen(url).read().decode('utf-8'))