20203114 实验二《Python程序设计》实验报告

 # 学号 20203114张晨曦《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 2031
姓名: 张晨曦
学号:20203114
实验教师:王志强
实验日期:2022年3月31日
必修/选修: 公选课

## 1.实验内容

  • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。

  • 考核基本语法、判定语句、循环语句、逻辑运算等知识点。

## 2. 实验过程及结果

  • 设计思路:首先确定设计目标,设计一个有两种模式——普通、科学,7种功能——实数与负数加减乘除、求余、取整、幂、阶乘、三角函数运算的计算器;其次确定设计方法,主要使用判断语句、循环语句,逻辑运算函数等实现功能。
  • 代码 : 
'''
    项目名称:计算器
    学号:20203114
    姓名:张晨曦
    日期:2022.4.6
'''

import math


def add(num_1, num_2):   #加法运算
    answer = num_1 + num_2
    return answer


def minus(num_1, num_2):   #减法运算
    answer = num_1 - num_2
    return answer


def multi(num1, num2):    #乘法运算
    answer = num1 * num2
    return answer


def div(num1, num2):     #除法运算
    answer = num1 / num2
    return answer


print('------------------')
print('| 欢迎使用本计算器  |')
print('| 0:普通计算器     |')
print('| 1:高级计算器     |')
print('------------------')
mode_flag = int(input('请选择计算器模式:\n'))  #选择计算器模式
while 1:                                    #整个计算的循环,若不break,则一直计算
    if mode_flag == 0:                   #选择计算器模式
        a = int(input('请输入操作数a:'))    #操作数输入
        op = (input('请选择运算类型:\n1:+\n2:-\n3:*\n4:/\n'))     #计算类型选择
        b = int(input('请输入操作数b:'))
        if op == '1':
            print(a, '+', b, '=', add(a, b))
        elif op == '2':
            print(a, '-', b, '=', minus(a, b))
        elif op == '3':
            print(a, '*', b, '=', multi(a, b))
        elif op == '4':
            print(a, '/', b, '=', div(a, b))
        else:
            print('输入数字无效,请重新输入')
    else:                                       #选择计算器模式
        op = input('请选择运算类型:\n'         
                       '0:复数+\t1:复数-\t2:复数*\t3:复数/\n'
                       '4:求余\t5:取整\t6:幂\t7:阶乘\n'
                       '8:三角函数运算\n')                  #选择运算类型
        if '0' <= op < '4':                                 #虚数四则运算
            real_a = int(input('请输入第一个复数的实部'))          #虚数输入
            false_a = int(input('请输入第一个复数的虚部'))
            a = complex(real_a, false_a)                    #利用函数将输入数转化为虚数
            real_b = int(input('请输入第二个复数的实部'))
            false_b = int(input('请输入第二个复数的虚部'))
            b = complex(real_b, false_b)
            if op == '0':
                print(a, '+', b, '=', add(a, b))
            elif op == '1':
                print(a, '-', b, '=', minus(a, b))
            elif op == '2':
                print(a, '*', b, '=', multi(a, b))
            elif op == '3':
                print(a, '/', b, '=', div(a, b))
        elif '4' <= op < '6':
            a = int(input('请输入第一个操作数:'))
            b = int(input('请输入第二个操作数:'))
            if op == '4':
                print(a, '%', b, '=', a % b)  #求余运算
            elif op == '5':
                print(a, '//', b, '=', a//b)   #取整运算
        elif op == '6':
            a = int(input('请输入底数:'))
            b = int(input('请输入指数:'))
            print(a, '', b, '次幂为:', a**b)   #幂运算
        elif op == '7':
            factorial_num = int(input('请输入所要计算阶乘的数:'))
            print(factorial_num, '的阶乘为:', math.factorial(factorial_num))      #阶乘求解
        elif op == '8':        #三角函数运算
            angle_op = input('请输入运算类型:sin、cos、tan\n')
            angle_num = int(input('请输入需计算三角函数的角度值:\n'))#获取弧度值
            radian = math.radians(angle_num)
            if angle_op == 'sin':
                print(angle_num, '正弦值为:', math.sin(radian))
            elif angle_op == 'cos':
                print(angle_num, '余弦值为', math.cos(radian))
            elif angle_op == 'tan':
                print(angle_num, '正切值为', math.tan(radian))
            else:
                print('输入操作类型错误,请重新输入')
        else:
            print('输入数字无效,请重新输入')
    print('>>>>>>>请问您是否继续进行运算?')
    choice_quit = input('Y:继续运算\nN:退出运算')
    if choice_quit == 'N':      #退出整个循环,结束计算
        print('Thanks for your use!')
        break
    else:
        print('请问您是否更换计算器模式?')
        choice_mode = input('Y:是\nN:否')
        if choice_mode == 'Y':
            mode_flag = ~mode_flag      #取反更改计算模式

 

码云地址:https://gitee.com/z-cx/conculator

 

  • 运行结果:

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

- 问题1:不知道三角函数运算函数。

- 问题1解决方案:通过百度查找解决该问题。

- 问题2:complex函数理解不透彻,导致应用不熟练。

- 问题2解决方案:通过网上查阅资料,熟悉complex用法。

- 问题3:阶乘初步考虑使用循环实现,但想寻求一种更简单的方法,比如函数。

- 问题3解决方案:通过百度,查找到阶乘函数,将复杂代码缩减至2行。

- 问题4:程序运行过程中发现三角函数的运算无法正常进行,程序总是会异常结束。

- 问题4解决方案:首先设置断点进行debug,发现在字符串比较过程中出现问题;然后通过百度字符串比较方式,发现字符串比较首先比较第一位的ascii值,若第一位可以比较出来,则后续不再进行比较。通过更改运算符代表数,问题得到解决。



## 其他(感悟、思考等)

debug对于代码调试十分快速有效。在先前学习C的过程中,对于debug的了解并不深入,从未用过,调试全部依靠自己查找;现在熟练掌握debug后,代码调试变得很轻松。

一个服务于他人的代码需做到尽可能完备,站在对方角度思考问题,才可能使代码功能性更好。

具备多种功能的代码编写需首先在大脑中形成一个整体框架,包括在哪里循环,在哪里判断,如此可保证代码编写效率。

posted @ 2022-04-06 21:19  Z_cx  阅读(96)  评论(0编辑  收藏  举报