20214318姚家豪 《python程序设计》实验二报告
课程:《Python程序设计》
班级: 2143
姓名: 姚家豪
学号:20214318
实验教师:王志强
实验日期:2022年4月5日
必修/选修: 公选课
## 1.实验内容
-
设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
- 考核基本语法、判定语句、循环语句、逻辑运算等知识点
## 2. 实验过程及结果
制作普通计算器和复数计算器
from datetime import *
import numpy as np
print("Besti-2目计算器!你值得拥有")
flag = True
result = 0
while flag == True:
choice = input("请选择你想要的计算器类型:0为普通计算器、1为复数计算器,2为行列式\n,3为阶乘")
if choice == "0":
op = input("请输入需要做的操作(+、-、*、/、%、//,^,输入0代表退出):\n")
if op == "0":
break
a = int(input("请输入操作数a\n"))
b = int(input("请输入操作数b\n"))
if op == "+":
result = a + b
elif op == "-":
result = a - b
elif op == "*":
result = a * b
elif op == "/":
result = a / b
elif op == "%":
result = a % b
elif op == "//":
result = a // b #返回商的整数部分,向下取整
elif op == "^":
result = a ** b #乘方
else:
print("输入有误,请重新输入\n")
elif choice == "1":
op = input("请输入需要做的操作(+、-、*、/,输入0代表退出):\n")
if op == "0":
break
a = complex(input("请输入第一个复数:\n"))
# python中复数是a+bj
b = complex(input("请输入第二个复数:\n"))
if op == "+":
result = a + b
elif op == "-":
result = a - b
elif op == "*":
result = a * b
elif op == "/":
result = a / b
else:
print("输入有误,请重新输入\n")
elif choice == "2":
A = []
n = int(input("几阶行列式?"))
for x in range(n):
row = []
for y in range(n):
row.append(int(input("A {} {} ".format(x+1,y+1))))
A.append(row)
a = np.array(A)
print ("行列式的值为: {:.3f}".format(np.linalg.det(a)))
elif choice == "3":
op = int(input("请输入一个自然数:\n"))
a = 1
for i in range(1,op+1):
a = a * i
print(a)
if choice != 3:
print(a, op, b, " = ", result, "\n")
在课上老师所讲的几个功能之上增加了乘方,行列式的计算,阶乘的计算。
其中以行列式的计算最为复杂
首先在需要在网上找到行列式的计算方法,我所选用的是一种引用sumpy库的编码方式
利用额外引入的py库,我们能免去许多麻烦。
关于乘方,用一个for循环就得以解决。
## 3. 实验过程中遇到的问题和解决过程
1,不引入库的行列式的计算实在是极其复杂。
解决办法:引入sumpy库
2,对于阶乘而言,只需要有一个a的输入,不需要b
解决办法:将阶乘的运算独立放在基础运算,复数运算,行列式计算之外。
##其他:
多多动手,抄代码抄多了就懂了(bushi)