1 完成下列函数并且计算,
a)编写一个函数 fun1(n), 返回的值为1+1/2+1/3+…1/n ,要求用分数计算,(提示使用Fraction类)
假设你学号的最后3位是p,那么令x=1000+p,求f(x)的值,它的分子和分母之和是多少?
from fractions import Fraction as Fra
def fun1(n):
SUM=0
for i in range(1,n+1):
xi=Fra(1,i)
SUM+=xi
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
n=int(input("请输入学号的最后三位"))
n=n+1000
SUM=fun1(n)
Split_SUM=split(SUM)
print("结果为",Split_SUM)
b)编写一个函数 fun2(n),返回值为(1+1/2+1/3+…+1/n)^2 +(1/2+1/3+…1/n)^2 +… +(1/(n-1)+1/n)^2 + (1/n)^2假设你学号的最后2位是p,那么令x=100+p,求f(x)的值,它的分子和分母之和是多少?
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)
2 基于UDP的通信程序,要求实现UDP的通信, 修改该程序,向111.231.9.47:5003端口发送 你的学号.
import socket
#发送
def Send(txt):
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #申请套接字
addr=("111.231.9.47",5003) #发送地址(IP地址+端口号)
s.sendto(txt.encode("UTF-8"),addr)
txt=input("请输入要发送的学号")
Send(txt)
3 文本编辑器制作
import tkinter
import tkinter as tk
from tkinter import *
import tkinter.filedialog
import tkinter.messagebox
import tkinter.scrolledtext
import tkinter.colorchooser
import tkinter.simpledialog
#----------------------------------------一、创建窗口-------------------------------------------------
filename="" #定义空文件名
win=tk.Tk()
win["height"]=400
win["width"]=600
#-----------------------------------------------------------------------------------------------------
#---------------------------------------二、功能定义区---------------------------------------------
#-----------------------------------------1.菜单栏 File-----------------------------------------------------------
textChanged=tk.IntVar(value=0) #字符串计数器
#1.打开
def Open():
global filename
#1.获取字符,是否保存原来的文档
if textChanged.get():
yesno=tk.messagebox.askyesno(title="Save or not",message="Do you want to Save?") #询问框
if yesno==tkinter.YES:
Save()
filename=tkinter.filedialog.askopenfilename(title="Open file",filetypes=[("Text files","*.txt")]) #打开路径框
#2.打开新的文档
if filename:
txtContent.delete(0.0,tk.END) #删除原来的文本
fp=open(filename,"rb") #读取文本
txtContent.insert(tkinter.INSERT,"".join(fp.read().decode('GBK'))) #解码插入到文本编辑器
fp.close() #关闭指针
textChanged.set(0) #字符串置0
#2.保存
def Save():
global filename
if not filename:
SaveAs()
elif textChanged.get():
fp=open(filename,"w") #创建文本
fp.write(txtContent.get(0.0,tkinter.END))#将文本框的内容导入文件
fp.close() #关闭
textChanged.set(0) #计数器置0
#3.保存到
def SaveAs():
global filename
#创建对话框,默认对应的路径和文件名
newfilename=tkinter.filedialog.asksaveasfilename(title="Save As",initialdir=r"c:\\",initialfile="new.txt")
#写入文件内容
if newfilename:
fp=open(newfilename,"w")
fp.write(txtContent.get(0.0,tkinter.END))
fp.close()
filename=newfilename
textChanged.set(0)
#4.关闭
def Close():
global filename
Save() #保存
txtContent.delete(0.0,tkinter.END) #区域置空
filename="" #文件名置空
#-------------------------------------------2.菜单栏 Edit-----------------------------------------------------------
#1.回退
def Undo():
txtContent["undo"]=True
try:
txtContent.edit_undo()
except Exception as e:
pass
#2.前进
def Redo():
txtContent["undo"]=True
try:
txtContent.edit_redo()
except Exception as e:
pass
#3.复制
def Copy():
txtContent.clipboard_clear() #清空缓冲区
txtContent.clipboard_append(txtContent.selection_get()) #保存到缓冲区
pass
#4.剪切
def Cut():
Copy() #复制文本
txtContent.delete(tkinter.SEL_FIRST,tkinter.SEL_LAST) #删除文本编译器的选中文本
#5.粘贴
def Paste():
try:
txtContent.insert(tkinter.SEL_FIRST,txtContent.clipboard_get()) #获取缓冲区文本
txtContent.delete(tkinter.SEL_FIRST,tkinter.SEL_LAST) #删除选中文本
return
except Exception as e:
pass
#6.查找
def Search():
textToSearch=tkinter.simpledialog.askstring(title="Search",prompt="What to search?")
start=txtContent.search(textToSearch,0.0,tkinter.END)
if start: #查找到时,返回yes
tkinter.messagebox.showinfo(title="Found",message="ok")
#--------------------------------------------3.菜单栏 Help-----------------------------------------------------------
#1,关于
def About():
tkinter.messagebox.showinfo(title="About",message="Author:Dong Fuguo") #弹出信息框
pass
#-------------------------------------------------------------------------------------------------------------------
#------------------------------------三、菜单栏框架----------------------------------
menu1=tk.Menu(win)
#菜单1 File
#---------------------------------------------------------------------
submenu=tk.Menu(menu1,tearoff=0)
submenu.add_command(label="Open",command=Open)
submenu.add_separator()
submenu.add_command(label="Save",command=Save)
submenu.add_separator()
submenu.add_command(label="SaveAs",command=SaveAs)
submenu.add_separator()
submenu.add_command(label="Close",command=Close)
menu1.add_cascade(label="File",menu=submenu)
#-----------------------------------------------------------------------
#菜单2 Edit
#-----------------------------------------------------------------------
submenu2=tk.Menu(menu1,tearoff=0)
submenu2.add_command(label="Undo",command=Undo)
submenu2.add_separator()
submenu2.add_command(label="Redo",command=Redo)
submenu2.add_separator()
submenu2.add_command(label="Copy",command=Copy)
submenu2.add_separator()
submenu2.add_command(label="Cut",command=Cut)
submenu2.add_separator()
submenu2.add_command(label="Paste",command=Paste)
submenu2.add_separator()
submenu2.add_command(label="Search",command=Search)
menu1.add_cascade(label="Edit",menu=submenu2)
#------------------------------------------------------------------------
#菜单3 Help
#------------------------------------------------------------------------
submenu3=tk.Menu(menu1,tearoff=0)
submenu3.add_command(label="About",command=About)
menu1.add_cascade(label="Help",menu=submenu3)
#------------------------------------------------------------------------
#----------------------------------------------------------------------------------------------------------
#------------------------------------------四、总体结构---------------------------------
#1.菜单栏
win.config(menu=menu1)
#2.滑动文本框
def keyPress(event):
textChanged.set(1)
txtContent=tk.scrolledtext.ScrolledText(win,wrap=tk.WORD)
txtContent.pack(fill=tk.BOTH,expand=tkinter.YES) #创建
txtContent.bind("<Key>",keyPress)#绑定按键识别器
win.mainloop()