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

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

  1. 实验过程及结果
    (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 choice1:
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 choice2:
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 answera+b:
count+=1
elif c
2:
answer=int(input(f'{a} - {b} ='))
if answera-b:
count+=1
elif c
3:
answer=int(input(f'{a} * {b} ='))
if answera*b:
count+=1
elif c
4:
answer=int(input(f'{a} / {b} ='))
if answera/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 c1:
answer=int(input(f'{a} + {b} ='))
if answer
a+b:
count+=1
elif c2:
answer=int(input(f'{a} - {b} ='))
if answer
a-b:
count+=1
elif c3:
answer=int(input(f'{a} * {b} ='))
if answer
a*b:
count+=1
elif c4:
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操作,循环判断等基本语法;同时学习了新的知识点:函数的定义与调用。
基本实现了实验目标。有待改进的地方为程序的稳定性以及可视化效果。希望通过后续学习能做出简单的计算器界面,增添更多功能,支撑更复杂的数学运算

参考资料
python实现一个简单计算器
简便python的四则运算生成器代码