# 20213413 2021-2022-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2134
姓名: 王佳慧
学号:20213413
实验教师:王志强
实验日期:2022年4月6日
必修/选修: 公选课

## 1.实验内容
1.1实验代码

print("励志做一个朴实无华有内涵的小计算器( ̄︶ ̄)↗ ")
import math
flag=True
while flag ==True:
choice = input("请选择计算机类型:1为复数计算器,2为普通计算器")
if choice == "1": #复数计算器
a = complex(input("请输入第一个复数:\n"))
b = complex(input("请输入第二个复数:\n"))
op = input("请输入需要做的操作(+、-、*、/, 输入0表示退出):\n")
if op == "0":
break
elif op == "+":
result = a+b
elif op == "-":
result = a-b
elif op == "*":
result = a*b
elif op == "/":
result = a/b
else:
print("输入有误,请重新输入。\n")
continue
print(a, op, b, "=", result)
#————————————————————————————————————————普通计算器——————————————————————————————————————
elif choice =="2": #普通计算器
a = int(input("请输入操作数1\n"))
op = input("请输入需要做的操作(+,-,*,/,^,!,%,,sin,cos,tan,\n输入2表示十进制转二进制,\n输入8表示十进制转八进制,\n输入16表示十进制转十六进制,\n输入0表示退出):\n")
if op == "0":
break
elif op == "sin":
print("a的正弦值为 %.4f" % math.sin(a))
elif op == "cos":
print("a的余弦值为 %.4f" % math.cos(a))
elif op == "tan":
print("a的正切值为 %.4f" % math.tan(a))
elif op == "!":
if a < 0:
print("错误,负数没有阶乘")
break
else:
result = math.factorial(a)
print("a的阶乘为 {}".format(result))
elif op == "z":
result = 3.1415926 * (a * a)
print("以a为半径的圆面积为 %.2f" % result)
#——————————————————————————————进制转换——————————————————————————————————————————————————
elif op == "2":
print("a从十进制转二进制为:", bin(a))
elif op == "8":
print("a从十进制转八进制为:", oct(a))
elif op == "16":
print("a从十进制转十六进制为:", hex(a))

elif op == "+" or "-" or "*" or "/" or "%" or "^^":
b = int(input("请输入操作数2:\n"))
if op == "+":
result = a + b
print(a, op, b, "=", result)
elif op == "-":
result = a - b
print(a, op, b, "=", result)
elif op == "*":
result = a * b
print(a, op, b, "=", result)
elif op == "/":
result = a / b
print(a, op, b, "=", result)
elif op == "%":
result = a % b
print(a, op, b, "=", result)
elif op == "**":
result = a ** b
print(a, op, b, "=", result)
else:
print("错误,请重新输入\n")
continue
result = 0

1.2代码运行测试

1.2.1 复数运算

 

 

1.2.2求一个数的三角函数

 

 1.2.3 将十进制转为二进制、八进制、十六进制

二进制——bin

八进制——otc

十六进制——hex

 

 1.2.4阶乘

 

 

1.2.5已知半径求相应圆的面积

 

 

1.2.6简单的整数运算

 

 1.2.7求余

 

 1.2.8 乘方

 

1.3 代码托管到 gitee

 

 


## 2. 实验过程及结果
本次实验是基于在老师课堂上跟着做的简易计算器改进的。

2.1 确定计算器可以实现的基础功能:

2.1.1 复数的加减乘除

2.1.2 实数的加减乘除、阶乘、乘方、求余、三角函数,进制转换,求圆的面积

2.1.3 确定代码顺序,查阅资料,询问同学后,确定先写较为简单的复数运算,再写整数的,整数中先赋一个变量,当选择两数之间的运算的时候再赋第二个变量。

2.1.4 写代码过程中,有关于上课没有讲到的进制转换、求面积等通过百度搜索、询问同学等方式解决。


## 3. 实验过程中遇到的问题和解决过程
- 问题1:运用复数计算器时一直报错
- 问题1解决方案:询问同学得知在运用complex时复数表示为"1+2j",而不是"1+2i"。改变输入方式即可正常运行。
- 问题2:出现不知道什么意思的错误提醒

- 问题2解决方案:百度搜索后发现字符串两边不能有空格。


- 问题3:经常出现“意外缩进”

- 问题3解决方案:在编写if/while/for 语句时要注意开头时不能随便空格。


##4 感悟、思考:

4.1在写代码完成一项任务之前,一定要计划好需要做的任务,最好列下清单,如果边做边想,不仅进度慢,还很容易忽略掉各种语句之间的结构,最终还要从头再来。

4.2要学会举一反三,在写转换进制的代码时,是看到转化为二进制使用到了Python中自己的函数来计算,即 bin()函数,所以继续搜索到,oct()函数可以将十进制数转换成八进制数,hex()函数可以将十进制数转换成十六进制数。

4.3要多询问,多看代码以及理解每个语法的含义,然后在运用到自己的代码中,才算学会。

## 参考资料

-  [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)

-  [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)
-  ...

posted on 2022-04-06 16:52  十里清欢  阅读(144)  评论(0编辑  收藏  举报