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

摘要:
学号2020-2021-2 Python编程实验二报告课程:Python-编程班级:1912姓名:唐启恒学号:20191218实验教师:王志强实验日期:2021 5月7日必修/选修课:公选课程1.设计实验内容,完成完整的应用程序,完成加、减、乘、除、,模数等运算,函数越多越好。检查基本语法、判断语句、循环语句、逻辑运算等知识点2.创建具有实验过程和结果的工程项目,使用Python语言实现具体操作,完成程序调试和运行,将代码托管到代码云。
学号 2020-2021-2 《Python程序设计》实验二报告

课程:《Python程序设计》
班级: 1912
姓名: 唐启恒
学号:20191218
实验教师:王志强
实验日期:2021年5月7日
必修/选修: 公选课

1.实验内容

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

2. 实验过程及结果

  • 创建工程项目,使用Python语言实现具体的操作运算,并完成程序调试和运行,代码托管到码云。

为方便功能划分,我设计了简易计算器的目录

print("""
    *****~欢迎使用简易计算器~*****
          本计算器提供的功能     
          1.简单四则运算      
          2.简单整数取模运算     
          3.求一个数三角函数      
          4.求一个数的整数次幂    
          5.求一个数的阶乘      
          6.解一元二次方程      
          7.统计学数值运算    
    **************************
        输入对应数值进行相应运算      
           输入-1退出程序
""")
t = 0

while t!='-1':
    t = int(input("请依照所要使用的功能输入相应的数字序号:"))
    if t==1:
        ari()
    elif t==2:
        mol()
    elif t==3:
        act()
    elif t==4:
        nqo()
    elif t==5:
        fac()
    elif t==6:
        print(qua())
    elif t==7:
        sta()
    elif t==-1:
        print("~感谢您的使用,再见~")
        exit(0)
    else:
        print("相应功能数字序号输入有误!")

    print("
是否再次计算?")
    print("""
        *****~欢迎使用简易计算器~*****
              本计算器提供的功能     
              1.简单二元四则运算      
              2.简单整数取模运算     
              3.求一个数三角函数      
              4.求一个数的整数次方     
              5.求一个数的阶乘      
              6.解一元二次方程      
              7.统计学数值运算    
        **************************
            输入对应数值进行相应运算      
               输入-1退出程序
    """)

20191218 实验二《Python程序设计》实验报告第1张

在完成一次计算后,输入相应数值还可以继续运算,输入-1退出程序
20191218 实验二《Python程序设计》实验报告第2张

简单计算器小程序分为七个模块

1.简单四则运算

采用老师上课所讲向函数传入多个参数的方法,实现对多个数字的求和、作差、累乘、连除

  • (1)add
def add(*para):
    sum = 0.0
    for num in para:
        sum = sum + num
    print("这些数字连续累加结果为:"+str(sum))

20191218 实验二《Python程序设计》实验报告第3张

  • (2)sub
def sub(*para):
    sum = 0.0
    for num in para:
        sum = sum + num
    print("这些数字连续作差的结果为:"+str(sum))

20191218 实验二《Python程序设计》实验报告第4张

  • (3)mul
def mul(*para):
    ans = 1.0
    for num in para:
        ans = ans * num
    print("这些数字连续累乘的结果为:"+str(ans))

20191218 实验二《Python程序设计》实验报告第5张

  • (4)div
def div(*para):
    ans = para[0]
    for num in para[1:]:
        if num == 0: #判断除数中是否存在0
            print("除数中不能出现0,错误!")
            break
        ans = ans / num
    print("这些数字连续相除的结果为:"+str(ans))

20191218 实验二《Python程序设计》实验报告第6张

2.简单整数取模运算

def mol():
    # 取模运算
    x = int(input("请输入整数被除数:"))
    y = int(input("请输入整数除数:"))
    while y == 0:
        print("输入错误!除数不能为0!")
        y = int(input("请重新输入整数除数:"))
    print(x % y)

20191218 实验二《Python程序设计》实验报告第7张

3.求一个数的三角函数

def act():
    # 求简单三角函数
    print("
1.求正弦
2.求余弦
3.求正切
4.求反正弦
5.求反余弦
6.求反正切")
    temp = 0
    while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5 and temp != 6:
        temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
        if temp == 1 or temp == 2 or temp == 3:
            x = float(input("请以角度制输入角度:"))
            x = x / 180 * math.pi
            if temp == 1:
                print('%.2f' %math.sin(x))
            elif temp == 2:
                print('%.2f' %math.cos(x))
            elif temp == 3:
                print('%.2f' %math.tan(x))
        elif temp == 4 or temp == 5 or temp == 6:
            x = float(input("请输入相应数值,答案将以角度制呈现:"))
            if temp == 4:
                if -1 <= x and x <= 1:
                    print('%.2f' % math.degrees(math.asin(x)))
                else:
                    print("无解!")
            elif temp == 5:
                x = float(input("请输入相应数值(-1≤x≤1):"))
                if -1 <= x and x <= 1:
                    print('%.2f' % math.degrees(math.acos(x)))
                else:
                    print("无解!")
            elif temp == 6:
                x = float(input("请输入相应数值:"))
                print('%.2f' % math.degrees(math.atan(x)))
        else:
            print("相应功能数字序号输入有误!")

20191218 实验二《Python程序设计》实验报告第8张

4.求一个数的n次幂

def nqo():
    # 求一个数的n次幂
    a = float(input("请输入底数:"))
    while a == 0:
        print("输入错误!底数不能为0!")
        a = int(input("请重新输入底数:"))
    n = float(input("请输入指数:"))
    print(math.pow(a,n))

20191218 实验二《Python程序设计》实验报告第9张

5.求一个数的阶乘

def fac():
    # 求一个数的阶乘,递归调用
    n = int(input("请输入一个整数:"))
    print(math.factorial(n))

20191218 实验二《Python程序设计》实验报告第10张

6.解一元二次方程

def qua():
    # 解一元二次方程
    print("解一元二次方程 ax^2 + bx + c = 0")
    a = float(input("请输入a:"))
    b = float(input("请输入b:"))
    c = float(input("请输入c:"))
    d = b*b - 4*a*c
    if d >= 0:
        x1 = (-b+math.sqrt(d)) / (2*a)
        x2 = (-b-math.sqrt(d)) / (2*a)
        if d == 0:
            return "有唯一的解:X = "+str(x1)
        else:
            return "X1 = "+str(x1)+'	'+"X2 = "+str(x2)
    else:
        x1 = str(-b/(2*a)) + '+' + str(math.sqrt(-d)/(2*a)) + 'i'
        x2 = str(-b/(2*a)) + '-' + str(math.sqrt(-d)/(2*a)) + 'i'
        return "X1 = "+x1+'	'+"X2 = "+x2

20191218 实验二《Python程序设计》实验报告第11张

7.统计学数据计算

def sta():
    # 统计学运算
    x = int(input("输入数据个数:"))
    y = []
    print("请输入数据:")
    for i in range(x):
        tmp = [float(input())]
        y += tmp
    print("
1.求和
2.求平均值
3.求极差
4.求方差
5.求标准差")
    temp = 0
    while temp != 1 and temp != 2 and temp != 3 and temp != 4 and temp != 5:
        temp = int(input("请依照所要使用的功能输入相应的数字序号:"))
        s = 0
        for i in range(x):
            s = s + y[i]
        var = 0
        for i in range(x):
            var = var + (s / x - y[i]) ** 2
        var = var / x
        if temp == 1:
            print(s)
        elif temp == 2:
            print(s / x)
        elif temp == 3:
            print(max(y) - min(y))
        elif temp == 4:
            print(var)
        elif temp == 5:
            print(math.sqrt(var))
        else:
            print("相应功能数字序号输入有误!")

20191218 实验二《Python程序设计》实验报告第12张

退出程序

20191218 实验二《Python程序设计》实验报告第13张

实验代码链接

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

  • 问题1:无法将输入的字符串直接转换成含浮点型数据的列表
    20191218 实验二《Python程序设计》实验报告第14张

  • 问题1解决方案:查找PHP网站,寻找python怎样实现列表的个性化读取(即要求通过输入字串生成指定的列表),只需要用.split()方法先将字符串进行分割生成一个含字符串类型的列表,再用列表生成器将其中每个元素转换成浮点型即可

  • 问题2:无法将输入的参数进行运算,如下图
    20191218 实验二《Python程序设计》实验报告第15张

  • 问题2解决方案:发现是因为在向函数传参数时漏掉了'*',加上后即可成为传任意长度的参数

  • 问题3:Markdown格式下不知道如何实现超链接

  • 问题3解决方案:参考Markdown教程,掌握超链接格式,以及快速插入超链接的方法

  • 问题4:在官网上下载最新版本的Pycharm(2021.1)并破解后发现打开py文件会出现无法找到python解释器

  • 问题4解决方案:如图,选择已安装的python所在目录即可
    20191218 实验二《Python程序设计》实验报告第16张

其他(感悟、思考等)

在简易计算器项目实践过程中,我发现要尤其注意各种细节,像传任意多参时一定不能漏掉'*',不能滥用字符串的拼接符'+',否则会出现下图所示的错误
20191218 实验二《Python程序设计》实验报告第17张
还有许多需要注意之处我在这就不一一列举了。在完成一个python小程序尤其是代码量较大时,一定要注意好分块进行代码编写,实现面向对象编程。否则整段程序写在一起不仅不好维护,而且也不好差错纠错。

参考资料

免责声明:文章转载自《20191218 实验二《Python程序设计》实验报告》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇架构师技能体系操作系统(科普章节)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python3.6升级及setuptools、pip安装

升级python3.6 1.打开官网www.python.org,找到最新3.6.3版本,复制下载链接 2.创建/app目录,wget下载到该目录下,编译安装 mkdir /app cd /app wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz tar xf Python-3...

函数:Python的乐高积木

函数可以将重复的代码打包起来,再有需要的时候可以不用写代码,直接调用。 一、定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。 >>> def MineFunc(): print('调用函数,执行print语句') &g...

NGUI系列教程二

接下来我们创建一个Label,NGUI->Open the Widget Wizard,打开widgetTool对话框,在Template中选择Label,确定AddTo右侧选项为panel,点击,Add To完成Label创建。 1.Label属性窗口如图 1.下面的节奏可能有点快,大家可以先熟悉一下上面讲的流程,再进行下面的学习。接下来我们...

《深度剖析CPython解释器》20. Python类机制的深度解析(第四部分): 实例对象的创建、以及属性访问

楔子 介绍完类对象之后,我们来介绍实例对象。我们之前费了老鼻子劲将类对象剖析了一遍,但这仅仅是万里长征的第一步。因为Python虚拟机执行时,在内存中兴风作浪的是一个个的实例对象,而类对象只是幕后英雄。 通过class类对象创建实例对象 我们还以之前的代码为例: class Girl: name = "夏色祭" def __init__(...

Layui 之自定义验证

一、验证radio、checkbox form.verify({ mustradio: function (value, item) { //单选按钮必选 var val = $(item).parent().find("input[name='answer']:checked").val();...

Python练习实例001

问题:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? #! /usr/bin/env python3 # -*- coding:utf-8 -*- # Author : Ma Yi # Blog : http://www.cnblogs.com/mayi0312/ # Date : 2020-06-1...