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

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

课程:《Python程序设计》

班级:2423

姓名:汤泽鹏

实验教师:王志强

实验日期:2025年3月26日

必修/选修:公选课

一、实验内容

  1. 设计并完成一个计算器的应用程序,包含基础的整数的加减乘除模运算,同时还要能完成如浮点数、复数的运算以及开方、指数、对数、上三角函数运算等等
  2. 设计一个小学生算数生成器,要求能够根据要求出题并判断对错
  3. 代码托管到码云

二、实验过程及结果

(一)计算器设计如下:

1.设计思路:

(1)首先计算器需要完成整数的+-*/mod等运算,随后再加入log、pow、sqrt、sin、cos、tan运算,最后引入浮点数和复数运算

(2)因为有的运算不兼容,且为了简化输入,本程序先让用户选择运算形式再进行数字输入

(3)调用对应函数进行运算输出

2.代码如下:

# 作者:20242321汤泽鹏
# 地点:电科院
# 时间:4 a.m
# 代理地址:Los Angels

import math
def Csum(num1, num2):
    return num1 + num2
def Csub(num1, num2):
    return num1 - num2
def Cmulti(num1, num2):
    return num1 * num2
def CDiv(num1, num2):
    if num2 == 0:
        print("除数不能为0")
        return 0
    return num1 / num2
def logab(a,b):
    return math.log(a,b)
def powab(a,b):
    return math.pow(a,b)
def sqrta(a):
    return math.sqrt(a)
def sina(a):
    return math.sin(a)
def cosa(a):
    return math.cos(a)
def tana(a):
    return math.tan(a)

print(''' 计算器程序
# -------------------------------
# 免责声明:
# 1. 本计算器软件仅供个人使用,开发者对软件使用中的任何损失、故障或不准确性不承担责任。
# 2. 在使用本软件时,请务必核对计算结果,开发者不保证任何由使用本软件而产生的决策准确性。
# 3. 本软件不适用于用于医疗、财务、法律等专业领域,用户应根据专业人士的建议作出决策。

# 版权声明:
# 本软件版权归[走于暗巷]所有,未经授权禁止复制、修改、分发本软件的任何部分。

# -------------------------------
# 开始计算器程序
'''
)

flag = True
while flag:
    choice = input("请输入运算符(+-*/ log pow sqrt sin cos tan):")
    choice0 = input("复数运算输入(1),整数运算输入(2),浮点数运算输入(3)\n")
    if choice0 == "1":
        num1 = complex(input("请输入一个数:"))
        if choice not in ['sqrt','sin','cos','tan']:
            num2 = complex(input("请输入另一个数:"))
    elif choice0 == "2":
        num1 = int(input("请输入一个数:"))
        if choice not in ['sqrt','sin','cos','tan']:
            num2 = int(input("请输入另一个数:"))
    elif choice0 == "3":
        num1 = float(input("请输入一个数"))
        if choice not in ['sqrt','sin','cos','tan']:
            num2 = float(input("请输入另一个数"))
    if choice == "+":
        print("num1 ",choice, " num2 = ", Csum(num1, num2))
    elif choice == "-":
        print("num1 ",choice, " num2 = ", Csub(num1, num2))
    elif choice == "*":
        print("num1 ",choice, " num2 = ", Cmulti(num1, num2))
    elif choice == "/":
        print("num1 ",choice, " num2 = ", CDiv(num1, num2))
    elif choice == "log":
        print("log以",num2,"为底",num1, "的对数 = ", logab(num1, num2))
    elif choice == "pow":
        print("num1 ",choice, " num2 = ", powab(num1, num2))
    elif choice == "sqrt":
        print(choice,"num1 ""= ", sqrta(num1))
    elif choice == "sin":
        print(choice,"num1 ""= ", sina(num1))
    elif choice == "cos":
        print(choice,"num1 ""=", cosa(num1))
    elif choice == "tan":
        print(choice,"num1 ""=", tana(num1))


    conti = input("是否继续?Y/n\n")
    if conti in ["Y","y"]:
        flag = True
    else:
        flag = False
print("感谢使用本计算器,再见!")

3.实验过程截图:

(1)整数运算:

(2)浮点数运算:

(3)复数运算:

(二)小学生算数生成器

1.设计思路:

(1)考虑到是小学生做,就只用整数的基础功能了

(2)但是还需要添加一些元素,比如积分措施或者一次性生成n道题这样的

2.代码实现:

# 作者:20242321汤泽鹏
# 地点:电科院
# 时间:4 a.m
# 代理地址:Los Angels

import random

print(''' 计算生成器程序
# -------------------------------
# 免责声明:
# 1. 本计算生成器软件仅供个人使用,开发者对软件使用中的任何损失、故障或不准确性不承担责任。
# 2. 在使用本软件时,请务必核对计算结果,开发者不保证任何由使用本软件而产生的决策准确性。
# 3. 本软件不适用于用于医疗、财务、法律等专业领域,用户应根据专业人士的建议作出决策。

# 版权声明:
# 本软件版权归[走于暗巷]所有,未经授权禁止复制、修改、分发本软件的任何部分。

# -------------------------------
# 开始计算生成器程序
'''
)
print('''欢迎来到计算世界
除法题四舍五入保留1位小数''')
sco = 0
cho0 = int(input('你想做几道题?'))
for i in range(0,cho0):
    op = random.randint(1,4)
    a = random.randint(1,100)
    b = random.randint(1,100)
    if op == 1:
        ans = int(input(f"{a} + {b} = ?"))
        if ans == (a+b):
            print('你答对了!')
            sco+=1
        else:
            print('你答错了。')
    elif op == 2:
        ans = int(input(f"{a} - {b} = ?"))
        if ans == (a-b):
            print('你答对了!')
            sco+=1
        else:
            print('你答错了。')
    elif op == 3:
        ans = int(input(f"{a} * {b} = ?"))
        if ans == (a*b):
            print('你答对了!')
            sco+=1
        else:
            print('你答错了。')
    elif op == 4:
        ans = float(input(f"{a} / {b} = ?"))
        if (ans-(a/b))<=0.1 and (ans-(a/b))>=-0.1:
            print('你答对了!')
            sco+=1
        else:
            print('你答错了。')
print(f'''你答对了{sco}道题,欢迎下次再来''')

3.实验截图

(三)将代码托管到码云上

实验二 · 55a4598 · 走于暗巷/pythonhomework - Gitee.com

三、实验中的问题

  1. 问题一:我在做计算器1.0版本调试时发现如果先输数字会使某些单目运算变得复杂,不方便

    问题一解决过程:调整输入顺序,先输入运算形式,再输入数字

  2. 问题二:我认为在这个程序中代码还是太冗长了,很有C语言的味道

    问题二解决过程:我向deepseek询问了有没有更简洁的写法,得知可以用字典来简化代码形式,但是本次实验重点不在于字典,所以我没有加到实验中

四、特别鸣谢_强哥

posted @ 2025-04-01 15:30  走于暗巷  阅读(36)  评论(0)    收藏  举报