Python程序设计实验报告【合集】

article/2025/10/19 15:51:08

课堂作业

1、词频统计:输入一个文件,程序读取文件,文件内容是英文内容,不少于500个单词的内容,统计每个单词在该短文内出现的次数。

https://www.jb51.net/article/144405.htm

https://www.cnblogs.com/Eudemines/p/9764409.html

https://www.cnblogs.com/zhuyinyinyin/p/7596217.html

https://www.cnblogs.com/lqx12/p/7602309.html

2、用Python设计一个计算器,在实现基本功能的基础上,增加三个功能按键,实现编译原理中提到的三种表达式“先验 3 5 +;中验 + 3 5;后验 + 3 5”。报告要求:需求分析,系统设计(用例图,功能框图,流程图),实现,源码

一、需求分析

1.1系统功能需求

        本计算器需要根据用户指定的数字与运算符来进行简单的加减乘除等功能。在运算并显示结果的同时,还需要显示用户按下的数字与运算符键,从而方便用户来进行核对算式和结果。本计算器可在生活中应对普通的日常问题,病能够做到快速、正确、稳定的计算出输入的计算内容。

1.2系统性能要求

        本程序作为一个简单的计算器程序,本程序相应并返回运算结果的时间不宜过长。因此,当用户输入完数字与运算符后,得到返回结果的延时不得超过1秒。在输入数值与运算符在合法范围内时,可以返回正确的运算结果。

二、系统设计

2.1用例图

                                                                                             图2.1 计算器用例图

2.2计算器功能图

 

                                                                                             图2.2计算器功能图

2.3程序流程图

                                                                                             图2.3 程序流程图

三、实现程序

3.1 程序源码

import tkinter as tk
class Calc(tk.Frame):  # 创建Calc类继承Framedef __init__(self, parent=None):"""简易图形用户界面计算器构造函数"""tk.Frame.__init__(self, parent)self.pack()self.startOfNextOperand = True  # 开始输入下一个操作数# 创建计算过程和结果的标签self.expr = tk.StringVar()  # 显示运算表达式self.expr.set('')self.exprLabel = tk.Label(self, font=('Helvetica', 10),fg='#666666', width=64, anchor='e', textvariable=self.expr)self.exprLabel.grid(row=0, column=0, columnspan=4)self.result = tk.StringVar()  # 显示结果self.result.set(0)self.resultLabel = tk.Label(self, font=('Helvetica', 20), width=34, anchor='e',textvariable=self.result)self.resultLabel.grid(row=1, column=0, columnspan=4)# 简易计算器按钮的按钮,使用一个2D列表表示buttons = [['先验','','后验','**'],['CE', 'C', '<-', '/'],['7', '8', '9', '*'],['4', '5', '6', '-'],['1', '2', '3', '+'],['±', '0', '.', '=']]# 然后使用嵌套的循环的方法创建和布局各个按钮for r in range(6):for c in range(4):# 定义事件处理函数cmd(),默认参数为按钮标签buttons[r][c]def cmd(key=buttons[r][c]):self.click(key)b = tk.Button(self, text=buttons[r][c], width=16, command=cmd)b.grid(row=r+2, column=c)# 前两行用于结果显示,按钮从第3行开始def click(self, key):"""事件处理"""if key == '=':   #按等号键时, 求值, 并显示结果resultExpr = self.expr.get() + self.result.get()resultNum = eval(resultExpr)self.result.set(resultNum)self.expr.set(resultExpr)self.startOfNextOperand = Trueelif key in '**+-/*':resultExpr = self.expr.get() + self.result.get() + keyself.expr.set(resultExpr)self.startOfNextOperand = Trueelif key == 'C':  # 全部清空, 回到初始状态self.expr.set('')self.result.set(0)elif key == 'CE':  # 清空当前输入self.result.set(0)elif key == '<-':oldnum = self.result.get()if len(oldnum) == 1: # 只有一个字符newnum = 0else:newnum = oldnum[:-1]self.result.set(newnum)elif key == '±':  # 正负号,切换正负号oldnum = self.result.get()  # 获取原来的值if oldnum[0] == '-':newnum = oldnum[1:]else:newnum = '-' + oldnumself.result.set(newnum)else: # 按数字或者小数点键if self.startOfNextOperand:self.result.set(0)self.startOfNextOperand = Falseoldnum = self.result.get()  # 获取原来的值if oldnum == '0':self.result.set(key)else:newnum = oldnum + keyself.result.set(newnum)  if __name__ == '__main__':root = tk.Tk()root.title('简易计算器')calc = Calc(root)root.mainloop()

3.2 运行截图

                                                                                             图3.2 运行截图

四、课程感想

        本学期我们学习了Python这节课程,通过这门课我们了解到了它的语法简单,编写起来方便的优点,也使我深刻体会到学习Python的必要性。因此学好Python是我们未来工作中非常重要的事情。对于Python的其他知识还需要不断地学习,希望以后会有更多收获。

实验一 面向对象程序设计实验

 一、实验目的

  1. 了解面向对象程序设计思想
  2. 了解对象、类、封装、继承、方法、构造函数和析构函数基本概念
  3. 掌握定义类、成员变量、成员函数、静态变量和静态方法
  4. 掌握通过类定义实现继承和多态的方法
  5. 掌握对象的创建和使用方法

二、实验内容(包括分析或步骤)

1. 定义类和使用类

  • 定义交通工具(Vehicle)类,定义两个成员变量:品牌(brand)、型号(type);定义构造函数,在其中通过静态变量方式设置品牌;
  • 定义析构函数,在其中将交通工具对象的品牌和型号清空;
  • 定义一个成员函数,在其中输出当前交通工具对象的品牌和型号;
  • 定义一个类方法,在其中更新交通工具类的静态变量品牌和型号。
  • 创建一个交通工具对象,设置其品牌为“audi”,型号为“A6”,然后通过对象调用其成员函数,输出其品牌和型号,销毁对象;
  • 设置所有交通工具对象的品牌为“大众”,通过类方法,更新品牌为“奥迪”。

2. 类的继承和多态

  • 定义一个抽象类交通工具(Vehicle)类,定义一个抽象方法(drive);
  •  定义2个子类汽车和飞机,在子类中实现抽象方法,输出不同交通工具的驾驶情况(如果是飞机,则输出机长名字、乘务员数量和乘客数量,如果是汽车,则输出驾驶员名字,汽车型号和行驶年数)。
  • 定义一个函数,判断输入的对象是什么类型的,然后调用drive方法输出该交通工具信息。

四、实验实现

核心代码1:

class Vehicle():"""def __init__(self):self.brandself.type"""def __init__(self, brand, type):self._brand = brandself._type = typedef __del__(self):print(self._brand, "is deleted")self._brand = ''# self._type = ''def set_brand(this, brand):this._brand = branddef out(self):return self._brand, self._typedef main():v = Vehicle("audi", "A6")print(v.out())v.__del__()v.set_brand('Volkswagen')print(v.out())v.set_brand('audi')print(v.out())if __name__ == '__main__':main() 

运行结果1:

核心代码2:

from abc import abstractmethod, ABCMetaclass Vehicle(metaclass=ABCMeta):@abstractmethoddef drive(self):passclass Car(Vehicle):def drive(self):print("驾驶员:%s\n汽车型号:%s\n行驶年数:%d" % ('LZG', 'AE86', 3))class Airplane(Vehicle):def drive(self):print("机长:%s\n乘务员数量:%d\n乘客数量:%d" % ('lzg', 15, 66))def run(vehicle):print(vehicle.__class__)vehicle.drive()def main():v = [Car(), Airplane()]m = map(run, v)list(m)if __name__ == '__main__':main()

运行结果2:

实验二 函数式编程实验

一、实验目的

  1. 了解什么是函数式编程
  2. 了解函数式编程的优点
  3. 掌握lambda表达式、map()函数、filter()函数、reduce()函数、zip()函数的使用方法;
  4. 掌握闭包和递归函数的设计
  5. 掌握迭代器和生成器的设计

二、实验内容(包括分析或步骤)

1. 使用lambda表达式定义函数

  • 定义函数完成z=x3+y/x3
  • 定义函数完成z=x3+ x2+ x+1

2. 使用map()函数完成函数计算

  • 使用map()函数依次计算[2,4,6,8,10]和[1,3,5,7,9]的乘积;(举例:2*1,4*3…..)
  • 编写一个判断字符串是否是回文联的函数,然后使用map()函数依次判断[“abbbabbba” ,“asababaSa”, “asffbaffssa”, “attbabtgba”]是否是回文联;

3. 使用reduce()函数完成函数计算

  • 使用reduce()函数计算[2,4,6,8,10]的乘积;
  • 使用reduce()函数计算[2,-4,6,-2,10,-8,4,-2,5]中正数的乘积;

4. 使用filter()函数完成函数计算

  • 使用filter()函数将[‘have a apple’,’you are student’,’hello world’]中,包含2个以上a字符的字符串过滤掉。

5. 使用递归函数设计完成计算

  • 求第50位斐波纳契数列的值
  • 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,利用递归算法编写程序计算共有多少种不同的走法.

三、实验实现

核心代码:

# <editor-fold desc="Description">
from functools import reducedef f1():z1 = lambda x, y: x ** 3 + y / (x ** 3)z2 = lambda x: x ** 3 + x ** 2 + x + 1print(z1(1, 2))print(z2(1))def f2():m1 = map(lambda x, y: x * y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])m2 = map(lambda s: s[-1::-1] == s, ['abbbabbba','asababaSa', 'asffbaffssa', 'attbabtgba'])print(list(m1))print(list(m2))def f3():r1 = reduce(lambda x, y: x * y, [2, 4, 6, 8, 10])r2 = reduce(lambda x, y: x * y if y > 0 else x,[2, -4, 6, -2, 10, -8, 4, -2, 5])print(r1)print(r2)def f4():f1 = filter(lambda s: s.count('a') < 2, ['have a apple', 'you are student', 'hello world'])print(list(f1))def f5():def f5_1(n=1, pre=1, pre_pre=0):if n is 1:return preelse:return f5_1(n - 1, pre + pre_pre, pre)def f5_2(n):count = 0if n >= 2:count += f5_2(n - 1)  # 1count += f5_2(n - 2)  # 2elif n == 1:count += f5_2(n - 1)else:count = 1return countprint(f5_1(50))print(f5_2(10))if __name__ == '__main__':f1()f2()f3()f4()f5()
# </editor-fold>

运行结果:


http://chatgpt.dhexx.cn/article/bXF0AR0L.shtml

相关文章

Java面向对象程序设计实验报告(实验一 面向对象基础练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 目录 ✨一、需求分析 ✨二、概要设计 ✨三、详细设计 ✨四、调试分析 ✨附录&#xff1a;源代码&#xff08;带注释&#xff09; 实验一 面向对象基础练习 实验环境&#xff1a;EclipseJDK …

《C语言程序设计》课程总结报告

《C语言程序设计》课程总结报告 一、我学到的内容 二、我的收获&#xff08;包括我完成的所有作业的链接收获&#xff09; 1.PTA作业 22年秋-第1周基础作业 https://pintia.cn/problem-sets/1575138141596397568 22年秋-第2周课后作业 https://pintia.cn/problem-sets/1…

(软件工程)-- 总体设计报告

1引言 1.1编写目的 本阶段完成系统的大致设计并说明系统的数据结构与软件结构&#xff0c;本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌&#xff0c;把它加工成程序细节上非常接近与源程序开发的软件标识。 预期读者&#xff1a;软件测试人员、程序开发员…

程序设计报告模板

一、问题及代码 /* * 文件名称&#xff1a;Ex1-1.cpp * 作 者&#xff1a;曾辉 * 完成日期&#xff1a;2015 年 1 月 1 日 * 版 本 号&#xff1a;v1.0 * 对任务及求解方法的描述部分: * 输入描述&#xff1a;无 * 问题描述&#xff1a;我的第一个C程序&#xff0c;熟…

C语言程序设计期末大作业—教师工资管理系统(附程序设计报告)

C语言大作业——教师工资管理系统 主要的难点在于文件读取 数据结构用的是链表 源码放上&#xff0c;直接粘贴复制就可以&#xff0c;我的C程大作业 具体的问题不懂的可以评论和私信&#xff0c;总之还是简单的 放张图片 程序设计报告可以私信我 #include<stdio.h> …

C语言程序设计 课程设计报告

C语言程序设计课程设计报告 一、 系统简介 学生成绩管理系统简介&#xff1a;一个简易的学生成绩管理系统&#xff0c;它包括并可以实现&#xff1a;“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、退出系统 ”…

程序设计基础实训报告

一、实训目的 程序设计基础是程序设计C语言和C语言的入门课程&#xff0c;该课程兼顾基础理论和编程实践。通过学习该课程的理论知识和编程实战&#xff0c;培养学生的专业实践技能&#xff0c;学校设有专用实训周&#xff0c;帮助学生全面牢固地掌握课堂教学内容、提升实际动手…

程序设计课程设计报告(学生成绩管理系统)

程序设计课程设计报告 课程设计题目及内容 题目&#xff1a;学生成绩管理系统 设计要求及提示如下&#xff1a; &#xff08;1&#xff09;、设计一个学生类Student,包括数据成员&#xff1a;姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。 &#xff08;2&…

如何在A4相纸上打印4张5寸相片

第一步&#xff0c;打开ps&#xff0c;点击文件-新建&#xff0c;新建一个空白文档&#xff0c;宽度设置为12.7cm&#xff0c;高度设置为8.9cm&#xff0c;分辨率设置为300&#xff0c;rgb颜色设置为8位。 如下图&#xff1a; 第二步&#xff0c;设置完点确定&#xff0c;然后…

PS照片排版1寸2寸等及照片规格

我的电脑是macOS&#xff0c;为了这个文章通用win的朋友&#xff0c;尽量少用快捷键&#xff0c;多截图&#xff0c;本文以1寸为例介绍&#xff1a; 1.打开PS&#xff0c;文件-打开-选择要打印的照片 2.点裁剪-选择宽/高/分辨率-输入高度-输入宽度-输入分辨率-确定 3. 点击图像…

自制1寸照片及打印排版

1、打开Photoshop,新建一个2.5*3.5cm的图层&#xff0c;分辨率为300的文件。如果是2寸的就新建一个3.5*5.3cm的图层。&#xff08;文件----新建&#xff09; 2、打开拍摄的照片&#xff0c;使用”拖动”工具将照片拖到之前新建的1寸照片中&#xff0c;照片拖进去之后原始尺寸肯…

计算机报名照片 1寸,国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?...

国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?由国家公务员考试网其他答疑栏目提供&#xff0c;更多关于国家公务员考试,国考报名确认,国考缴费入口,国考照片,国家公务员考试其他答疑的内容&#xff0c;请关注国家公务员考试网/河北人事考试网&#xff01; 2021年…

photoshop中如何在6寸相纸上打印1寸照片10张2X5模式(自动填充模式)

如何在6寸相纸上打印1寸照片 初学photoshop&#xff0c;在ps中设置。 1.将照片拖入到ps中 2.在图像->图像大小中设置图像尺寸&#xff0c;如下图&#xff1a; 3.确认后&#xff0c;将图片另存为 4.在文件->新建 由于6寸照片是152mmX102mm 因此将1寸尺寸画布尺寸设置成3.…

六寸画布平铺16张一寸照片并打印

1、新建一个一寸画布 2、照片拷贝进来 适当缩放 铺满 3、新建一个六寸画布 4、ctrlc拷贝一寸照片 粘贴到六寸画布中 调整位置 复制图层 可以用方向键微调 合并图层&#xff08;ctrlE&#xff09;后继续复制图层 可以放16张一寸照片 5、添加打印机&#xff08;已添加…

4r照片尺寸是多大_数码照片4D、4R、6RW是什么意思,怎样调整4D照片尺寸?

数码照片4D、4R、6RW是什么意思,怎样调整4D照片尺寸?数码相机和DV进入寻常百姓家&#xff0c;有些朋友希望把外出旅游或者居家时拍的照片冲印出来&#xff0c;但是一些朋友对里面的专业说法不太熟悉&#xff0c;比如3R,4R,4D,5D,5R,6R等照片的规格和尺寸不清楚&#xff0c;其实…

计算机一级报名照片是几寸的,法考报名照片要求几寸

法考报名照片要求尺寸是2寸照片。证件照为电子照片&#xff0c;标准尺寸为413像素(宽)626像素(高)&#xff0c;文件类型为jpg格式&#xff0c;文件大小为40KB ≤ 文件大小 ≤ 100KB。电子照片需本人近三个月内正面、免冠、彩色(蓝、红、白色底)证件电子照片&#xff0c;照片必须…

5寸照片尺寸_证件照尺寸及更换背景颜色教程

证件照主要分三种尺寸&#xff0c;分别为&#xff1a; 1寸“2.5cm*3.5cm”&#xff1b; 小2寸(护照)“3.3cm *4.8cm”。 2寸“3.5cm*5.3cm”&#xff1b; 证件照常见背景色为白色、红色、蓝色。 背景色的参数分别为&#xff1a; 白色“R:255 G:255 B:255”&#xff1b; 红色“R…

8m照片宽和高是多少_8寸照片的大小

展开全部 8寸照片的大小是15.2cm*20.3cm&#xff0c;英寸是6*8&#xff0c;大概是A4打印纸的一半。 相片62616964757a686964616fe78988e69d8331333431366235尺寸是相片冲印时用到的标准尺寸。相片的尺寸分为两类&#xff1a;通常(Normal)和超级(Super)。通常类短边为十吋以内(即…

PS制作一寸照片

文章目录 第一步进行裁剪第二步选择-主体第三步 选择并遮住第四步 画笔涂抹头发边缘第五步 勾选净化颜色第六步 新建图层第七步 -填充颜色第八步 保存摘抄 第一步进行裁剪 1寸照片 宽x高X分辨率 762像素x1086像素x300 第二步选择-主体 第三步 选择并遮住 第四步 画笔涂抹头发…

数码照片尺寸对照表

数码相机日渐普及&#xff0c;相关配套行业--数码相片冲洗店也越开越多。可是&#xff0c;在你高高兴兴把拍摄到的数码相片拿去冲洗之前&#xff0c;你知道应该做些什么准备工作吗&#xff1f; 现阶段生产的数码相机虽然大部分都已具备300万像素以上分辨率(清晰度)&#xf…