20241110 实验二《Python程序设计》实验报告

学号 2024-2025-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2411
姓名: 王方俊
学号:20241110
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

一、实验内容

(一)设计并完成一个计算器,支持整数和复数,可以完成加、减、乘、除、对数和幂等运算,并设计简单的封面。

(二)设计一个出计算题程序,每次出10题,支持加减乘除四则运算,并统计正确率。

二、实验过程及结果

(一)设计一个计算器

1.计算器需要包含加减乘除四则运算,可定义函数进行计算。并设计属于自己的计算器封面,设计控制计算器是否继续。

代码如下

    import mathdef Csum(num1, num2):return num1 + num2def Cdel(num1, num2):return num1 - num2def Cmul(num1, num2):return num1 * num2def Chu(num1, num2):if num2 == 0:print("除数不能为0")return Nonereturn num1 / num2cover = """
====================================================================================================================================###########################欢迎使用多功能计算器技术原创,切勿盗用                            支持四则运算(整数/小数)请放心食用高效 准确作者:20241110 王方俊###########################
====================================================================================================================================
"""
print(cover)flag = True
while flag:try:num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+-*/):")if operator == "+":print(num1, operator, num2, "=", Csum(num1, num2))elif operator == "-":print(num1, operator, num2, "=", Cdel(num1, num2))elif operator == "*":print(num1, operator, num2, "=", Cmul(num1, num2))elif operator == "/":result = Chu(num1, num2)if result is not None:print(num1, operator, num2, "=", result)else:print("无效的运算符")if input("是否继续?(Y/N):").upper() == "N":flag = Falseexcept ValueError:print("输入无效,请输入数字")except Exception as e:print(f"发生错误: {e}")

运行结果如下

2.将计算器功能从整数拓展到复数,程序先判断是整数还是复数。注意复数是a+bj而不是a+bi(这点与数学区分开来)。

代码如下

    import mathdef Csum(num1, num2):return num1 + num2def Cdel(num1, num2):return num1 - num2def Cmul(num1, num2):return num1 * num2def Chu(num1, num2):if num2 == 0:print("除数不为0")return Nonereturn num1 / num2cover = """
===============================================================================================================================================================================================###########################欢迎使用多功能计算器技术原创,切勿盗用                            支持四则、幂、对数运算(整数/复数)请放心食用高效 准确作者:20241110 王方俊###########################
===============================================================================================================================================================================================
"""
print(cover)flag = True
while flag:choice_type = input("请问:需要复数(1)还是整数(2)运算:")if choice_type == "1":try:num1 = complex(input("请输入一个数(支持如 3+4j 格式):"))num2 = complex(input("请输入另一个数(支持如 3+4j 格式):"))except ValueError:print("输入的复数格式有误,请重新输入,例如 3+4j。")continueelif choice_type == "2":try:num1 = int(input("请输入一个数:"))num2 = int(input("请输入另一个数:"))except ValueError:print("输入的不是有效的整数,请重新输入。")continueelse:print("输入无效,请输入 1 或 2。")continueoperator = input("请输入运算符(+-*/):")if operator == "+":print(num1, operator, num2, "=", Csum(num1, num2))elif operator == "-":print(num1, operator, num2, "=", Cdel(num1, num2))elif operator == "*":print(num1, operator, num2, "=", Cmul(num1, num2))elif operator == "/":result = Chu(num1, num2)if result is not None:print(num1, operator, num2, "=", result)if input("是否继续?Y/N:").upper() == "N":flag = False

运行结果如下

3.进一步拓展计算器的功能,如增加对数函数和幂函数。注意对数函数需要满足真数大于0且底数大于0并且不为1。

代码如下

    import mathdef Csum(num1, num2):return num1 + num2def Cdel(num1, num2):return num1 - num2def Cmul(num1, num2):return num1 * num2def Chu(num1, num2):if num2 == 0:print("除数不为0")return Nonereturn num1 / num2def Cpow(num1, num2):return num1 ** num2def Clog(num1, num2):try:if isinstance(num1, complex) or isinstance(num2, complex):import cmathreturn cmath.log(num1, num2)else:return math.log(num1, num2)except ValueError:print("对数运算输入值不合法,请确保底数大于0且不等于1,真数大于0。")return Noneexcept ZeroDivisionError:print("对数运算中底数不能为1。")return Nonecover = """
===============================================================================================================================================================================================###########################欢迎使用多功能计算器技术原创,切勿盗用                            支持四则、幂、对数运算(整数/复数)请放心食用高效 准确作者:20241110 王方俊###########################
===============================================================================================================================================================================================
"""
print(cover)flag = True
while flag:choice_type = input("请问:需要复数(1)还是整数(2)运算:")if choice_type == "1":try:num1 = complex(input("请输入一个数(支持如 3+4j 格式):"))num2 = complex(input("请输入另一个数(支持如 3+4j 格式):"))except ValueError:print("输入的复数格式有误,请重新输入,例如 3+4j。")continueelif choice_type == "2":try:num1 = int(input("请输入一个数:"))num2 = int(input("请输入另一个数:"))except ValueError:print("输入的不是有效的整数,请重新输入。")continueelse:print("输入无效,请输入 1 或 2。")continueoperator = input("请输入运算符(+-*/^log):")if operator == "+":print(num1, operator, num2, "=", Csum(num1, num2))elif operator == "-":print(num1, operator, num2, "=", Cdel(num1, num2))elif operator == "*":print(num1, operator, num2, "=", Cmul(num1, num2))elif operator == "/":result = Chu(num1, num2)if result is not None:print(num1, operator, num2, "=", result)elif operator == "^":print(num1, operator, num2, "=", Cpow(num1, num2))elif operator == "log":result = Clog(num1, num2)if result is not None:print("log以", num2, "为底", num1, "的对数是:", result)if input("是否继续?Y/N:").upper() == "N":flag = False

运行结果如下

(二)设计一个出计算题程序

编写小学生刷题程序,一次出十道题,最后统计正确率。

    import randomdef generate_question():operators = ['+', '-', '*', '/']op = random.choice(operators)if op == '+':a = random.randint(1, 100)b = random.randint(1, 100)answer = a + belif op == '-':a = random.randint(1, 100)b = random.randint(1, 100)a, b = max(a, b), min(a, b)answer = a - belif op == '*':a = random.randint(1, 20)b = random.randint(1, 10)answer = a * belse:b = random.randint(1, 10)a = b * random.randint(1, 10)answer = a // breturn str(a) + " " + op + " " + str(b) + " = ", answerdef math_quiz():print("=" * 50)print("欢迎来到数学小测验!")print("你将回答10道四则运算题")print("=" * 50)correct = 0for i in range(1, 11):question, answer = generate_question()while True:try:user_answer = int(input("第" + str(i) + "题: " + question))if user_answer == answer:print("回答正确!\n")correct += 1else:print("回答错误,正确答案是: " + str(answer) + "\n")breakexcept ValueError:print("请输入一个整数!")score = correct * 10print("\n测验结束!")print("你的得分: " + str(score) + "分")print("正确率: " + str(correct) + "/10 (" + str(score) + "%)")if score == 100:print("太棒了!满分!")elif score >= 70:print("做得不错!")else:print("再加把劲!")if __name__ == "__main__":while True:math_quiz()again = input("\n是否再来一次?(y/n): ").lower()if again != 'y':print("再见!")break

运行结果

三、实验过程中遇到的问题和解决过程

问题1:复数无法表示

问题1解决方案:不能用a+bi,要用a+bj。同时设置提示(如3+4j)让用户理解

问题2:不知道如何让用户端终止程序

问题2解决方案:通过老师讲解用(Y/N)提示,当且仅当用户输入N,程序结束

四、其他(感悟、思考等)

1.Python中很多奇妙的事情,如复数的表示与数学类似但不尽相同。面对复杂的复数运算,程序自己可以解决。

2.灵活定义一些函数可以事半功倍。

参考资料

零基础学《Python》

python—函数详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打造用户认证系统,构筑信息安全防线

在当今的数字化时代,信息安全和用户隐私保护变得越来越重要。用户身份认证是确保信息安全的第一道防线。通过验证用户身份,可以防止未经授权的访问和数据泄露。它有助于保护用户的个人信息、账户资金和其他敏感数据。此外,用户身份认证还可以提高系统的安全性,减少恶意行为…

LAN网的搭建

1 此下列三台主机都在局域网内,不涉及和ISP的Internet网络连接 2 以下三台主机,每台主机都各自有两个网卡,一个是无线网卡,一个是有线网卡。注:有线网卡和无线网卡通用,都可以既连接WAN又可以连接以太网(LAN局域网)。3 [Acer laptop] [Dell mini …

UML用例图-UML Use Case Diagram

用例图是UML中最简单,使用最高频的图之一,它通常用于诠释“这个软件做了什么”。用例图的的表达非常简单并且通俗易懂,不论研发、产品、测试,还是完全不懂软件的外行,用例图基本都能被看懂。.wj_nav { display: inline-block; width: 100%; margin-top: 0; margin-bottom:…

喜提好人卡?混元模型模块独立维护与开源发布

接着我们上次向Spring AI提交的混元模型模块,我已经完成了所有关于混元的聊天对接,并提交了相应的PR描述。提交后,荣获了一张“好人卡”,如图所示:今天,我们决定将之前提交给Spring AI官方的PR重新拿出来,并准备将其独立维护在一个开源仓库中。做出这一决策的原因是Spri…

VMware Aria Automation 8.18.1 新增功能简介

VMware Aria Automation 8.18.1 新增功能简介VMware Aria Automation 8.18.1 - 多云基础架构自动化平台 Multi-Cloud Infrastructure Automation Platform 请访问原文链接:https://sysin.org/blog/vmware-aria-automation/ 查看最新版。原创作品,转载请保留出处。 作者主页:…

最小二乘及最小二乘法系统辨识

目录一般最小二乘法加权最小二乘递推最小二乘 一般最小二乘法 无需每次对整体数据进行最小二乘估计,利用上次计算的值与当前数据融合计算,获取计算结果。本质上是对老的计算结果修正的方式,节省计算步骤,降低运算量,提升计算的效率。 若辨识模型: \[z_{(k)}={h_{(k)}}^T\…

氩气保护焊接气体流量控制

该节气装置通过以下方法,为您减少30%-50%的焊接气体的用量。在整个焊接过程中,气流与焊接电流自动同步调节。 “较大电流 — 较多气体/较小电流 — 较少气体”极高速气阀即使在焊接停止时间很短的情况下,也可开闭。通过持续的气体保护以及预先“编程”,脉冲气体可进一步减小…

2025.3.29日 清华大学-郝泽旭 的模拟赛

2025.3.29日 清华大学-郝泽旭 的模拟赛原题可以转化为给定了 \(k\) 个起点,求 \(k\) 个终点,使得路径两两无公共点的所有路径之和的最大值。 注意到先上再下的路径可以拆成两部分,即从关键点开始先向上到达一个点后再向下可以看作一条从关键点向上的路径与一条从非关键点向上…

DDL转换,一键导出表结构,生成DDL语句【转载】

源代码:https://gitee.com/wsitm/RuoYi-RDBMS 一、驱动管理驱动管理功能,用户能够上传并配置各类数据库驱动包。无论是常见的MySQL、Oracle、PostgreSQL、SQL Server,还是更多小众的数据库类型,只需上传相应的驱动包,即可迅速完成配置。 这一功能不仅简化了驱动安装与更新…

库卡机器人维修KSS26045硬件错误维修

库卡机器人在使用过程中,可能会遇到常见的KSS26045硬件故障,这些机器人故障大致可以归结为以下几种类型: 先是电源故障。一旦电源系统出现问题,库卡机器人可能会面临无法启动或无法维持正常运行的困境。为了诊断电源故障,可以利用万用表等专业工具来精确测量电源的输出电压…

PHP历理 精准处理数学表达式中的小数末尾零

<?php /*** 精准处理数学表达式中的小数末尾零* @param string $expression 原始数学表达式* @return string 处理后的规范表达式*/ function formatMathExpression(string $expression): string {// 正则匹配所有小数(包含整数部分和小数部分)return preg_replace_callb…

判断 Python 代码是不是 AI写的几个简单方法

作者:Laurel W来源:Adobe作为一名数据科学和数学老师,我其实不介意我的学生使用像 ChatGPT 这样的 LLM,只要它是用来辅助他们学习,而不是取代学习过程。加州理工学院的申请文书指南启发了我为编程和机器学习课制定 AI 使用政策: 哪些是加州理工申请文书中不道德的 AI 使用…