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

课程:《Python程序设计》
班级: 2421
姓名: 庞耀
学号:20242120
实验教师:王志强
实验日期:2024年3月26日
必修/选修: 公选课

1.实验内容

(1)设计并完成一个完整的应用程序,完成加减乘除模等运算,在此基础上添加乘方,取对数等功能以及简单的复数四则运算
(2)设计并完成一个随机生成简单四则运算题目的程序,并实现统计用户正确题目个数的功能
(3)熟练掌握函数的定义,基本语法、判定语句、循环语句、逻辑运算等知识点
(4)将上述两个代码上传至gitee

2. 实验过程及结果

(1)计算器程序calculator.py

设计思路:
定义简单的加减乘除函数,方便后续代码简化与修改
利用标志flag控制计算器的循环使用与结束退出
通过用户自主选择实数或复数,区分不同运算
调用math库实现简单对数运算

源代码:

import math

def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b
def pow(a,b):
    return a**b
def rem(a,b):
    return a%b

flag=True
while flag:
    choice=int(input('请选择实数(1) 复数(2)'))
    if choice==1:
        a=float(input('数字一:'))
        b=float(input('数字二:'))
        c=input('输入运算符(+ - * / ** % log):')
        if c=='+':
            print(a,c,b,'=',add(a,b))
        elif c=='-':
            print(a,c,b,'=',sub(a,b))
        elif c=='*':
            print(a,c,b,'=',mul(a,b))
        elif c=='/':
            print(a,c,b,'=',div(a,b))
        elif c=='**':
            print(a,c,b,'=',pow(a,b))
        elif c=='%':
            print(a,c,b,'=',rem(a,b))
        elif c=='log':
            print(f'以{a}为底{b}的对数为:{math.log(b,a)}')
    elif choice==2:
        a=complex(input('数字一:'))
        b=complex(input('数字二:'))
        c = input('输入运算符(+ - * /):')
        if c=='+':
            print(a,c,b,'=',a+b)
        elif c=='-':
            print(a,c,b,'=',a-b)
        elif c=='*':
            print(a,c,b,'=',a*b)
        elif c=='/':
            print(a,c,b,'=',a/b)
    if input('请选择是否继续(Y/N):')=='Y':
        flag=True
    else:
        flag=False

实验结果:

(2)随机生成四则运算题目

设计思路:
利用实验一中接触过的random库进行随机数生成
设置level便于用户选择难度
设置count统计用户正确题目个数,增强实用性

源代码

import random
level=input('请选择难度1.(1-10) 2.(1-100):')
i=1
count=0
if level=='1':
    while i<=10:
        a=random.randint(1,10)
        b=random.randint(1,10)
        c = random.randint(1, 5)
        if c==1:
            answer=int(input(f'{a} + {b} ='))
            if answer==a+b:
                count+=1
        elif c==2:
            answer=int(input(f'{a} - {b} ='))
            if answer==a-b:
                count+=1
        elif c==3:
            answer=int(input(f'{a} * {b} ='))
            if answer==a*b:
                count+=1
        elif c==4:
            answer=int(input(f'{a} / {b} ='))
            if answer==a/b:
                count+=1
        i+=1
elif level=='2':
    while i<=10:
        a=random.randint(1,100)
        b=random.randint(1,100)
        c=random.randint(1, 5)
        if c==1:
            answer=int(input(f'{a} + {b} ='))
            if answer==a+b:
                count+=1
        elif c==2:
            answer=int(input(f'{a} - {b} ='))
            if answer==a-b:
                count+=1
        elif c==3:
            answer=int(input(f'{a} * {b} ='))
            if answer==a*b:
                count+=1
        elif c==4:
            answer=int(input(f'{a} / {b} ='))
            if answer==a/b:
                count+=1
        i+=1
print(f'你答对了{count}题')


实验结果:

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

  • 问题1:如何实现复数的输入与运算
  • 问题1解决方案:了解到Python自带有complex数据形式以及加减法
  • 问题2:如何实现对数运算
  • 问题2解决方案:调用math库中的log函数实现计算
  • 问题3:如何解决除数为0的情况
  • 问题3解决方案:设置输入为0的特殊情况,强化代码

其他(感悟、思考等)

本次实验复习了实验一所学的基础知识,例如函数库的导入与代码上传gitee操作,循环判断等基本语法;同时学习了新的知识点:函数的定义与调用。
基本实现了实验目标。有待改进的地方为程序的稳定性以及可视化效果。希望通过后续学习能做出简单的计算器界面,增添更多功能,支撑更复杂的数学运算

参考资料

posted @ 2025-03-26 21:38  light-py  阅读(59)  评论(0)    收藏  举报