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

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

课程:《Python程序设计》
班级: 2413
姓名: 张岳峰
学号:20241307
实验教师:王志强
实验日期:2025年3月26日
必修/选修: 公选课

1.实验内容

1.设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

2.考核基本语法、判定语句、循环语句、逻辑运算等知识点

2. 实验过程及结果

1、跟着强哥的思路设计并编写一个简单的初阶计算器
代码如下:

代码解读

1. 显示欢迎信息

print("""
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
          欢迎使用yuefen牌计算器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
          版权zyf
          开发时间:2025.3.26
        本产品仅适用于中小学生!严禁满18岁的大学生使用。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
""")
  • 解释:运用三引号 """ 来定义一个多行字符串,涵盖了计算器的欢迎信息、版权信息、开发时间等整活内容。借助 print 函数把这个多行字符串输出到控制台,从而展示这些信息。

2. 导入模块

import math
  • 解释:导入 Python 的 math 模块,该模块提供了诸多数学函数,后续代码会用到其中的 log 函数。

3. 定义基本运算函数

def jia(num1, num2):
    return num1 + num2

def jian(num1, num2):
    return num1 - num2

def chen(num1, num2):
    return num1 * num2

def chu(num1, num2):
    if num2 == 0:
        print("除数不能为0")
        return 0
    return num1 / num2

def logab(a,b):
    return math.log(a,b)
  • 解释
    • jia 函数:对两个数执行加法操作并返回结果。
    • jian 函数:对两个数执行减法操作并返回结果。
    • chen 函数:对两个数执行乘法操作并返回结果。
    • chu 函数:对两个数执行除法操作,若除数为 0 则打印错误信息并返回 0,否则返回商。
    • logab 函数:借助 math.log 函数计算以 b 为底 a 的对数并返回结果。

4. 主循环控制

flag = True
while flag:
  • 解释:定义变量 flag 并初始化为 True。利用 while 循环,只要 flagTrue,循环就会持续执行。

5. 选择运算类型

leixin = input("请问:需要复数(1)还是整数(2)运算?\n")
if leixin == "1":
    num1 = complex(input("请输入一个复数:"))
    num2 = complex(input("请输入另一个复数:"))
elif leixin == "2":
    num1 = int(input("请输入一个整数:"))
    num2 = int(input("请输入另一个整数:"))
elif leixin != "1" and leixin != "2":
    print("请选择正确的类型")
    continue
  • 解释:运用 input 函数让用户选择是进行复数运算还是整数运算。若用户输入 1,则使用 complex 函数将用户输入转换为复数类型。若用户输入 2,则使用 int 函数将用户输入转换为整数类型。若用户输入既不是 1 也不是 2,则打印错误信息并使用 continue 语句跳过本次循环,重新等待输入。

6. 选择运算符并计算

choice = input("请输入运算符(+-*/ log):")
if choice == "+":
    print("num1 ", choice, " num2 = ", jia(num1, num2))
elif choice == "-":
    print("num1 ", choice, " num2 = ", jian(num1, num2))
elif choice == "*":
    print("num1 ", choice, " num2 = ", chen(num1, num2))
elif choice == "/":
    print("num1 ", choice, " num2 = ", chu(num1, num2))
elif choice == "log":
    print("log以", num2, "为底", num1, "的对数 = ", logab(num1, num2))
  • 解释:运用 input 函数让用户输入运算符。根据用户输入的运算符,调用相应的函数进行计算,并将结果输出。

7. 询问是否继续

conti = input("是否继续?Y/N\n")
if conti == "Y" or conti == "y":
    flag = True
else:
    flag = False
  • 解释:运用 input 函数询问用户是否继续进行计算。若用户输入 Yy,则将 flag 设为 True,继续循环;否则将 flag 设为 False,结束循环。

调试一下,问了强哥给我演示学会了在PyCharm用debug设置断点,有问题可以检索到哪一条代码的结果出了问题:

加入自己的小版权,运行一下看看有没有问题:

2.初阶计算器功能比较少,只有加减乘除和取对数,界面不是很美观,联想起来学C语言的时候制作分数统计系统的界面,设计了一种简洁的操作界面,并加入了幂运算、开方的计算,丰富了功能
代码如下:

功能实现过程如下:

1. 导入模块

import math

此语句导入了 Python 的 math 模块,该模块提供了众多数学函数,后续代码会用到其中的 sqrtlog 函数。

2. 定义基本数学运算函数

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

def multiply(x, y):
    return x * y

def divide(x, y):
    if y == 0:
        return "Error: division by zero"
    return x / y

def power(x, y):
    return x ** y

def square_root(x):
    if x < 0:
        return "Error: square root of a negative number"
    return math.sqrt(x)

def logarithm(x, base):
    if x <= 0 or base <= 0 or base == 1:
        return "Error: invalid input for logarithm"
    return math.log(x, base)
  • add 函数:对两个数执行加法操作并返回结果。
  • subtract 函数:对两个数执行减法操作并返回结果。
  • multiply 函数:对两个数执行乘法操作并返回结果。
  • divide 函数:对两个数执行除法操作,若除数为 0 则返回错误信息,否则返回商。
  • power 函数:计算一个数的指定次幂并返回结果。
  • square_root 函数:计算一个数的平方根,若该数为负数则返回错误信息,否则使用 math.sqrt 函数计算并返回结果。
  • logarithm 函数:计算一个数的指定底数的对数,若输入不符合对数定义,比如N<0则返回错误信息,否则使用 math.log 函数计算并返回结果。

3. 主循环

while True:
    print("选择运算:")
    print("1. 加法")
    print("2. 减法")
    print("3. 乘法")
    print("4. 除法")
    print("5. 幂运算")
    print("6. 开方")
    print("7. 对数运算")
    print("8. 退出")

    choice = input("输入你的选择(1/2/3/4/5/6/7/8): ")

运用 while True 创建一个无限循环,持续在主界面展示操作选项。借助 print 函数显示可供选择的数学运算和退出选项。利用 input 函数获取用户的选择并存储于 choice 变量中。

4. 退出程序

if choice == '8':
    print("程序已退出。")
    break

若用户输入的选择为 8,则打印退出信息并使用 break 语句跳出循环,从而结束程序。

5. 处理需要两个操作数的运算

if choice in ('1', '2', '3', '4', '5'):
    try:
        num1 = float(input("输入第一个数字: "))
        num2 = float(input("输入第二个数字: "))
    except ValueError:
        print("输入无效,请输入有效的数字。")
        continue
    if choice == '1':
        print(num1, "+", num2, "=", add(num1, num2))
    elif choice == '2':
        print(num1, "-", num2, "=", subtract(num1, num2))
    elif choice == '3':
        print(num1, "*", num2, "=", multiply(num1, num2))
    elif choice == '4':
        print(num1, "/", num2, "=", divide(num1, num2))
    elif choice == '5':
        print(num1, "**", num2, "=", power(num1, num2))

若选择的是 1 - 5 中的某个选项,程序会尝试获取两个数字作为操作数。运用 try-except 语句捕获输入非数字的情况,若出现异常问题则打印错误信息并使用 continue 语句跳过本次循环,重新等待用户输入。根据用户的选择调用相应的函数进行计算,并输出结果。

6. 处理开方运算

elif choice == '6':
    try:
        num = float(input("输入要开方的数字: "))
    except ValueError:
        print("输入无效,请输入有效的数字。")
        continue
    print(f"√{num} = {square_root(num)}")

若用户选择 6,程序会尝试获取一个数字。同样使用 try-except 语句处理错误的输入,若输入有错则跳过本次循环。调用 square_root 函数计算平方根并输出结果。

7. 处理对数运算

elif choice == '7':
    try:
        num = float(input("输入真数: "))
        base = float(input("输入底数: "))
    except ValueError:
        print("输入无效,请输入有效的数字。")
        continue
    print(f"log{base}({num}) = {logarithm(num, base)}")

若选择 7,程序读取输入的真数和底数。利用 try-except 语句处理错误输入,若输入无效则跳过本次循环。调用 logarithm 函数计算对数并输出结果。

8. 处理无效选择

else:
    print("无效的选择,请重新输入。")

若输入的选择不在 1 - 8 的范围内,程序会打印错误信息并重新等待用户输入。

调试一下:

运行结果如图:

3.上传至个人gitee码云仓库托管:


3. 实验过程中遇到的问题和解决过程

  • 问题1:无法上传至git库,一上传就报错,上传成功在个人gitee仓库也找不到代码
  • 问题1解决方案:在实验一配置过的项目创建新的python程序文件,重新链接git库上传并推送源程序,查询资料得知应该以管理员身份运行PyCharm才能上传。
  • 问题2:不太了解python中利用while语句实现重复计算界面的语法用法
  • 问题2解决方案:看教材、询问豆包帮我纠正代码错误,并学习到了while语句在python的正确用法
    和C语言whlie语句区别具体如下:
  • 问题3:不了解python数学库特殊运算函数的接口
  • 问题3解决方案:问了豆包学习了python中的数学运算,并在此基础上学习了逻辑运算、赋值运算、比较运算等运算语句,具体如下:
  • 问题4:math库不支持复数的运算
  • 问题4解决方案:问了豆包学习了python中的复数运算,得知处理复数运算的有专门的cmath库,使用cmath库成功处理复数进阶运算。

其他(感悟、思考等)

编写python代码时设计算法其实和c语言很像,甚至有相同的逻辑,这就是快速学习的基础。只需要了解python各个功能实现的语句,函数接口,和语法便可以运用学习C语言是高效的算法来实现。python的功能比C语言要更丰富一些,甚至可以对文字赋值运算。平时碰到代码报错不要直接给AI询问错误,逐渐尝试并熟练掌握Debug设置断点,可以自己分析并解决问题。AI可以大大提高资料搜索的效率,比翻书查找快很多,可以针对自己的问题给出解决方法和知识,学会合理运用AI,极大的提升学习效率,更快更好地掌握编程能力。

参考资料

posted @ 2025-04-02 20:04  20241307张岳峰  阅读(14)  评论(0)    收藏  举报