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

(一)简单四则运算的实验内容,实验过程以及结果
1.程序代码

点击查看代码
def sum(x,y):
    return x+y
def sub(x,y):
    return x-y
def mul(x,y):
    return x*y
def div(x,y):
    if y == 0:
        return "除数不能为0!"
    return x/y

while True:
    num1 = float(input("请输入数字1是: "))
    num2 = float(input("请输入数字2是: "))
    choice= input("请输入运算符号+-*/")
    if choice in('+','-','*','/'):
        try:
            if choice =='+':
                print(num1,"+",num2,"=",sum(num1,num2))
            elif choice == '-':
                print(num1,"-",num2,"=",sub(num1,num2))
            elif choice =='*':
                print(num1,"*",num2,"=",mul(num1,num2))
            elif choice =='/':
                print(num1,"/",num2,"=",div(num1,num2))
            break
        except:
            print("输入错误,请检查")
    else:
        print("请重新输入")
2.实验结果

(二)添加取对数算法,并添加结尾是否退出,注意对数函数需要满足真数大于0且底数大于0并且不为1。
1.实验代码

点击查看代码
import math
def sum(x,y):
    return x+y
def sub(x,y):
    return x-y
def mul(x,y):
    return x*y
def log(x,y):
    return math.log(x,y)
def div(x,y):
    if y == 0:
        return "除数不能为0!"
    return x/y
flag = True
while flag:
    num1 = float(input("请输入数字1:"))
    num2 = float(input("请输入数字2:"))
    choice= input("请输入运算符号:+, -, *, /, log")
    if choice in('+', '-', '*', '/', 'log'):
        try:
            if choice == '+':
                print(num1,"+",num2,"=",sum(num1,num2))
            elif choice == '-':
                print(num1,"-",num2,"=",sub(num1,num2))
            elif choice == '*':
                print(num1,"*",num2,"=",mul(num1,num2))
            elif choice == '/':
                print(num1,"/",num2,"=",div(num1,num2))
            elif choice == 'log':
                print(num1,"log",num2,"=",log(num1,num2))
            x = int(input('还要继续吗?继续输入1,退出输入2'))
            if x == 1:
                flag = True
            elif x== 2:
                flag = False
        except:
            print("输入错误,请检查")
    else:
        print("请重新输入")

2.运算结果

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

1.程序代码

点击查看代码
import math
def sum(x, y):
    return x + y

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

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

def log(x, y):
    return math.log(x, y)

def div(x, y):
    if y == 0:
        return "除数不能为0!"
    return x / y

flag = True
while flag:
    is_complex = input("是否进行复数运算?是的话就打个yes,不是的话就输个no")
    if is_complex.lower() == 'yes':
        num1_str = input("请输入复数1(格式如a+bi):")
        num2_str = input("请输入复数2(格式如a+bi):")
        num1 = complex(*map(float, num1_str.replace('i', '').split('+')))
        num2 = complex(*map(float, num2_str.replace('i', '').split('+')))
    else:
        num1 = float(input("请输入数字1:"))
        num2 = float(input("请输入数字2:"))

    choice = input("请输入运算符号:+, -, *, /, log")
    if choice in ('+', '-', '*', '/', 'log'):
        try:
            if choice == '+':
                print(num1, "+", num2, "=", sum(num1, num2))
            elif choice == '-':
                print(num1, "-", num2, "=", sub(num1, num2))
            elif choice == '*':
                print(num1, "*", num2, "=", mul(num1, num2))
            elif choice == '/':
                print(num1, "/", num2, "=", div(num1, num2))
            elif choice == 'log':
                if isinstance(num1, complex) or isinstance(num2, complex):
                    print("复数没法取对数啊!")
                else:
                    print(num1, "log", num2, "=", log(num1, num2))
            x = int(input('还要继续吗?继续输入1,退出输入2'))
            if x == 1:
                flag = True
            elif x == 2:
                flag = False
        except:
            print("输错了,再来")
    else:
        print("重输一次bro")

2.实验结果:

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

1.实验代码

点击查看代码
import math


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


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


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


def log(x, y):
    if isinstance(x, complex) or isinstance(y, complex):
        return "复数没法取对数啊!"
    if x <= 0 or y <= 0 or y == 1:
        return "对数运算要求真数大于 0 且底数大于 0 并且不为 1。"
    return math.log(x, y)


def div(x, y):
    if y == 0:
        return "除数不能为 0!"
    return x / y


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


flag = True
while flag:
    is_complex = input("是否进行复数运算?是的话就打个 yes,不是的话就输个 no: ")
    if is_complex.lower() == 'yes':
        num1_str = input("请输入复数 1(格式如 a+bi):")
        num2_str = input("请输入复数 2(格式如 a+bi):")
        num1 = complex(*map(float, num1_str.replace('i', '').split('+')))
        num2 = complex(*map(float, num2_str.replace('i', '').split('+')))
    else:
        num1 = float(input("请输入数字 1:"))
        num2 = float(input("请输入数字 2:"))

    choice = input("请输入运算符号: +, -, *, /, log, pow: ")
    if choice in ('+', '-', '*', '/', 'log', 'pow'):
        try:
            if choice == '+':
                print(num1, "+", num2, "=", sum(num1, num2))
            elif choice == '-':
                print(num1, "-", num2, "=", sub(num1, num2))
            elif choice == '*':
                print(num1, "*", num2, "=", mul(num1, num2))
            elif choice == '/':
                print(num1, "/", num2, "=", div(num1, num2))
            elif choice == 'log':
                result = log(num1, num2)
                print(num1, "log", num2, "=", result)
            elif choice == 'pow':
                print(num1, "**", num2, "=", power(num1, num2))

            x = int(input('还要继续吗?继续输入 1,退出输入 2: '))
            if x == 1:
                flag = True
            elif x == 2:
                flag = False
        except:
            print("输错了,再来")
    else:
        print("重输一次 bro")
2.实验结果 ![](https://img2024.cnblogs.com/blog/3618038/202504/3618038-20250409190409063-1793050064.png)

(三)在实验过程中遇到的问题和解决方法
1.在'/'运算中,讨论num2==0的情况
2.一开始没有想到调用math,傻傻想怎么算log,看了群里的代码豁然开朗
3.结尾是否退出哪里缩进错误导致一开始无法循环,又检查一遍才发现它跟最后elif放一起了
(四)实验收获
对于函数封装的认识:
通过将常用的逻辑封装到函数中,可以在程序的多个地方重复调用,节约敲代码的时间。同时通过函数名直观体现函数功能,方便调用。
参考资料
--《零基础学Python》
--https://blog.csdn.net/2401_85737382/article/details/145499074

posted on 2025-03-26 21:04  gzk6962  阅读(39)  评论(0)    收藏  举报