20183411 李丞灏 2019-2020《Python程序设计》实验二 计算器设计 报告
课程:《Python程序设计》
班级: 1834
姓名: 李丞灏
学号:20183411
实验教师:王志强老师
实验日期:2020年4月16日
必修/选修: 公选课
1.实验内容
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
考核基本语法、判定语句、循环语句、逻辑运算等知识点。
2. 实验过程及结果
本次实验需要设计计算器,我设计的计算器可以实现普通的加减乘除混合运算、求解一元一次方程、求余
和计算圆面积及周长的运算并通过while语句进行计算的循环。并且可以按需要保留相应的位数。
导入math模块后用户将想要计算的表达式输入即可计算混合运算
- 代码如下:*
import re
import math
def add(c,v):
d = [0]
f = 0
for k in range(0, len(c)):
if (c[k] == '-' or c[k] == '+'):
f += 1
if (c[k] == '-'):
d.append(f)
w = re.split('[+-]', c)
for item in w:
if (item.find('*') != -1):
y = w.index(item)
t = item.split('*')
n = 1
for i in t:
if (i.find('/') != -1):
q = t.index(i)
p = i.split('/')
h = 1
for bo in p:
h *= float(bo)
u = (float(p[0]) * float(p[0])) / h
t[q] = u
for i in t:
n *= float(i)
w[y] = str(n)
for item in w:
if (item.find('/') != -1):
Q = w.index(item)
P = item.split('/')
H = 1
for Bo in P:
H *= float(Bo)
U = (float(P[0]) * float(P[0])) / H
w[Q] = U
else:
continue
m = 0
r = 0
for item in w:
m += float(item)
for fi in d:
r += float(w[fi])
m = m - 2 * r + 2 * float(w[d[0]])
M = round(m,v)
return M
def mod(A1,B1):
y = A1%B1
return y
def equation(a2,b2,c2):
y = (c2 - b2)/c2
return y
def rou(r,v):
c = math.pi*r*2
C = round(c,v)
return C
def area(r,v):
s = math.pi*r**2
S = round(s, v)
return S
A = -1
while (A != 0):
A = int(input("欢迎使用至简计算器!
请输入您想要实现的功能:
1.普通计算 2.求余运算 3.计算一元一次方程"
" 4.计算圆面积和周长 0.退出""
"))
if (A == 1):
c = str(input("请输入计算式:
"))
v = int(input("请输入您想要保留的位数:
"))
print(c + '=' + str(add(c, v)))
print("
")
elif (A == 2):
print("A mod B
")
A1 = int(input("请输入 A:
"))
B1 = int(input("请输入 B:
"))
print(str(A1)+' '+'mod'+' '+str(B1)+' '+'='+' '+str(mod(A1,B1)))
print("
")
elif (A == 3):
print("ax + b = c
")
a2 = float(input("请输入 a:
"))
b2 = float(input("请输入 b:
"))
c2 = float(input("请输入 c:
"))
print(str(a2)+'x'+' '+'+'+' '+str(b2)+' '+'='+' '+str(equation(a2,b2,c2)))
print("
")
elif (A == 4):
r = float(input("请输入半径:
"))
v = int(input("请输入您想要保留的位数:
"))
print("该圆的周长为:",rou(r,v))
print("该圆的面积为:",area(r,v))
print("
")
- 代码运行结果如下:*
** 代码的码云链接:https://gitee.com/Lch6453/game/blob/star/The calculater.py **
3. 实验过程中遇到的问题和解决过程
问题:无法解决混合运算及先乘除、后加减的运算规则
解决方案:使用分隔符将输入的字符串进行分割,将两侧的数字按照对应的运算方式计算,并优先计算乘除部分。
其他(感悟、思考等)
*** 人生苦短,我用Python!!! ***
参考资料
蓝墨云班课