20202216 邓童丹 2020-2021-2 《Python程序设计》实验二报告

20202216 邓童丹 2020-2021-2 《Python程序设计》实验二报告

实验二 计算器设计

  • 课程:《Python程序设计》
  • 班级: 2022
  • 姓名: 邓童丹
  • 学号:20202216
  • 实验教师:王志强
  • 实验日期:2021年4月26日
  • 必修/选修: 公选课

(一). 实验内容

  • 设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善。
  • 考核基本语法、判定语句、循环语句、逻辑运算等知识点

(二). 实验过程及结果
创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。

  • 通过上课时老师的讲解和课后在网上知识查找,我设计的计算器实现了以下几个功能
  1. 求两数的加(+),减(-),乘(*),除(/),整除(//),取余(mod),幂乘(**),用python自带的基本运算符即可实现
    代码如下:
        a = int(input("please a:"))
        b = int(input("please b:"))
        if oper == "+":
            print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "-":
            print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "*":
            print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "/":
            if b == 0:
                print("b输入错误!")
            else:
                print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "//":
            if b == 0:
                print("b输入错误!")
            else:
                print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "%":
            if b == 0:
                print("b输入错误!")
            else:
                print("a" + oper + "b= ", func1(a, b, oper))
        elif oper == "**":
            print("a" + oper + "b= ", func1(a, b, oper))

函数部分:

  def func1(a, b, oper):
    if oper == "+":
        return a + b
    elif oper == "-":
        return a - b
    elif oper == "*":
        return a * b
    elif oper == "/":
        return a / b
    elif oper == "//":
        return a // b
    elif oper == "%":
        return a % b
    else:
        return a ** b

运行结果如下:

2. 判断两数的大小并输出最大最小值,用if语句实现

        elif oper == "max":
            print("a" + oper + "b= ", max(a, b))
        elif oper == "min":
            print("a" + oper + "b= ", min(a, b))

函数部分:

  def max(a, b):
    if a > b:
        return a
    else:
        return b


  def min(a, b):
    if a < b:
        return a
    else:
        return b
  1. 求由a累加到b的结果,可用for循环语句实现
  def func2(a, b):
    sum1 = 0
    for item in range(a, b + 1):
        sum1 = sum1 + item
    return sum1
  1. 求阶乘和组合数,用递归函数实现
        elif oper == "!":
            print("a!=", func3(a))
            print("b!=", func3(b))
        elif oper == "C":
            x = func3(a)
            z = func3(b)
            if a > b:
                y = func3(a - b)
                print("C(b,a)=",x / (y * z))
            else:
                y = func3(b - a)
                print("C(b,a)=", z / (y * x))

函数部分:

  def func3(n):
    if n <= 1:
        return 1
    else:
        return n * func3(n - 1)

运行结果如下:

  1. 求三角函数的sin,cos,可调用python自带的matn库函数实现,并可以先将输入的角度转化为弧度再计算
        elif oper == "sin":
            print("sin(a)=", math.sin(a*math.pi/180))
            print("sin(b)=", math.sin(b*math.pi/180))
        elif oper == "cos":
            print("cos(a)=", math.cos(a*math.pi/180))
            print("cos(b)=", math.cos(b*math.pi/180))

运行结果如下:

  1. 求多数连加和连乘,将列表里的值传入函数中实现,其中连加可以用python自带的sum函数
      if oper == "++++" or oper == "****":
        x = input("输入一些数吧,记得用“,”隔开")
        list1 = x.split(",")
        list1 = [int(list1[i]) for i in range(len(list1))]
        if oper == "++++":
            print("多数求和:", sum(list1))
        elif oper == "****":
            print("多数连乘:", func4(*list1))

函数部分:

  def func4(*para):
    sum1 = 1
    for item in para:
        sum1 = sum1 * item
    return sum1

运行结果如下:

应老师要求将完整代码托管到码云上
我的码云链接

(三). 实验过程中遇到的问题和解决过程

  • 问题1:不会用sum函数求连加的和
  • 问题1解决方案:通过网上查找资料,学会了sum函数使用的正确格式
  • 问题2:一开始使用错了逻辑运算符,导致判断失败
  • 问题2解决方案:看书,纠正了自己的错误
  • 问题3:不会在makedown中插入代码段
  • 问题3解决方案:网上查找资料
  • 问题4:不会如何将多个数传入函数中
  • 问题4解决方案:通过老师上课时的讲解和网上资料,知道要使用列表

其他(感悟、思考等)
在这次实验中,我学会了如何用python函数来减少重复冗长的代码,调用了python自带的函数进行计算,如何将多个数输入列表里并将列表传入函数中。
在此实验里还有一些不够完善的地方需要改进,而这需要我继续学习python丰富的知识。

参考资料
Markdown 编辑器 代码添加行数
python求和函数sum()详解
Python 递归
Python split()方法详解:分割字符串

posted @ 2021-05-09 17:32  rprsu  阅读(76)  评论(0编辑  收藏  举报