Logo

郎哥编程

编程案例——面积计算器

2020-04-15 591

1、编程要求

阿萌要开发一个面积计算器程序,用于帮助学生理解平面几何图形的边长与面积的关系。程序可以计算长方形、正方形、平行四边形、三角形的面积。

01.png

阿萌这次编写的程序有点复杂,程序要计算四个几何图形的面积,而且计算每个几何图形面积的输入也不尽相同。阿萌该如何编写这个程序呢?

02.png

2、问题分解

平时我们在解决一些复杂问题时,会把一个复杂的问题分解成多个子问题,先逐个解决这些子问题,当这些子问题解决后,复杂的问题自然就得到了解决。

例如:假如你要在家做一顿丰盛的晚餐,你可能会安排人去采购食材、安排另外的人备菜,你负责掌勺。我们如果把做一顿丰盛的晚餐作为一个复杂问题,那么采购食材、备菜、掌勺就是这个复杂问题的子问题,当采购食材、备菜、掌勺这些问题得到解决后,做一顿丰盛的晚餐这个大问题自然就得到了解决。

03.png

把复杂的问题分解成多个子问题就是分而治之的思想,分而治之的思想同样也可以使用到编程过程中。对于复杂的程序,可以对程序的功能进行分解,将程序的功能分解成多个子功能,从而达到将复杂问题进行简化的目的。

3、划分模块

面积计算器可以分解为计算长方形的面积、计算正方形的面积、计算平行四边形的面积、计算三角形的面积四个子功能,每个子功能是一个独立的模块文件。

04.png

模块文件就是我们创建的代码文件。前面我们说过,一个Python程序由一个模块或多个模块组成,每个模块就是一个代码文件。在这些模块中,只有一个是主模块,该主模块将被python解释器直接执行模块中的代码,其它模块为功能模块,功能模块只有被主模块的代码调用后才会执行。

按照功能划分,面积计算器程序共有五个模块文件,主模块文件main.py,计算长方形面积的模块文件rectangle.py,计算正方形面积的模块文件square.py,计算平行四边形面积的模块文件paraller.py,计算三角形面积的模块文件triangle.py,还有主模块文件main.py。

05.png

模块划分完成后,就可以开始编写每个模块代码了。

4、计算长方形的面积

长方形的面积公式为:S = a * b

S表示长方形的面积,a表示长方形的长,b表示长方形的宽。

程序的输入是长方形的长和宽,程序的输出是长方形的面积。

06.png

计算长方形的面积用函数来实现,方便主模块的调用,阿萌绘制了计算长方形面积的流程图。

07.png

在流程图中,当学生输入的a和b不是整数或小数时,需要提示用户重新输入长方形的长和宽,用代码实现时,可以使用while循环来实现。

rectangle.py代码如下:

'''
程序文件:rectangle.py
功能描述:计算长方形的面积
调用模块:main.py
代码编写时间:2020/04/11
作者:编程训练营
'''
# 定义函数area
def area():
    while(True):
        # 输出提示信息
        a = input("请输入长方形的长(整数):")
        # 判断a是否是整数或小数
        if a.isdigit():
            # 输出提示信息  
            b = input("请输入长方形的宽(整数):")
            if b.isdigit():
                S = int(a) * int(b)
                return S
            else:
                print("输入错误,请重新输入")
        # 提示学生输入错误
        else:
            print("输入错误,请重新输入")


代码解读

代码定义了area函数,用于计算长方形的面积。在area函数内部使用了while循环,当学生输入的内容不是整数时,函数会提示学生输入错误,直至学生输入正确的长方形的长和宽。函数计算长方形的面积,并返回面积。

5、计算正方形的面积

正方形的面积公式为:S = a * a

S表示正方形的面积,a表示正方形的边长。

程序的输入是正方形的边长,程序的输出是正方形的面积。

08.png

计算正方形的面积也通过函数来实现,方便主模块的调用。阿萌绘制了计算正方形面积的流程图。

09.png

square.py代码如下:

'''
程序文件:square.py
功能描述:计算正方形的面积
调用模块:main.py
代码编写时间:2020/04/11
作者:编程训练营
'''
# 定义函数area
def area():
    while(True):
        # 输出提示信息
        a = input("请输入正方形的边长(整数):")
        # 判断a是否是整数或小数
        if a.isdigit():
            S = int(a) * int(a)
            return S
        # 提示学生输入错误
        else:
            print("输入错误,请重新输入")


 代码解读

计算正方形面积的代码和计算长方形面积的代码基本相同,在编写代码时,可以把rectangle.py的代码复制过来,在rectangle.py代码的基础上修改即可。

6、计算平行四边形的面积

平行四边形的面积公式为:S = a * h

S表示平行四边形的面积,a表示平行四边形的底,h表示平行四边形的高。

程序的输入是平行四边形的底和高,程序的输出是平行四边形的面积。

10.png

计算平行四边形的面积也通过函数来实现,方便主模块的调用。阿萌绘制了计算平行四边形面积的流程图。

11.png

paraller.py代码如下:

'''
程序文件:paraller.py
功能描述:计算平行四边形的面积
调用模块:main.py
代码编写时间:2020/04/11
作者:编程训练营
'''
# 定义函数area
def area():
     while(True):
        # 输出提示信息
        a = input("请输入平行四边形的底(整数):")
        # 判断a是否是整数或小数
        if a.isdigit():
            # 输出提示信息  
            h = input("请输入平行四边形的高(整数):")
            if h.isdigit():
                S = int(a) * int(h)
                return S
            else:
                print("输入错误,请重新输入")
        # 提示学生输入错误
        else:
            print("输入错误,请重新输入")


代码解读

编写代码一定要注意语句的缩进对齐,同一层次的语句左侧要对齐。内层语句要比外层语句缩进一定数量的空格,建议都是四个空格。

7、计算三角形的面积

三角形的面积公式为:S = a * h / 2

S表示三角形的面积,a表示三角形的底,h表示三角形的高。

程序的输入是三角形的底和高,程序的输出是三角形的面积。

12.png

计算三角形的面积也通过函数来实现,方便主模块的调用。阿萌绘制了计算三角形面积的流程图。

13.png

triangle.py代码如下:

'''
程序文件:triangle.py
功能描述:计算三角形的面积
调用模块:main.py
代码编写时间:2020/04/11
作者:编程训练营
'''
# 定义函数area
def area():
    while(True):
        # 输出提示信息
        a = input("请输入三角形的底(整数):")
        # 判断a是否是整数或小数
        if a.isdigit():
            # 输出提示信息  
            h = input("请输入三角形的高(整数):")
            if h.isdigit():
                S = int(a) * int(h) / 2
                return S
            else:
                print("输入错误,请重新输入")
        # 提示学生输入错误
        else:
            print("输入错误,请重新输入")

   

代码解读

当while循环条件设置为True时,一定要在循环体有退出循环机制。当学生输入正确的底和高后,函数计算三角形的面积,并使用return语句返回面积,函数执行结束,循环自然就退出了。

8、模块的导入

阿萌有个疑问,主模块如何使用这些功能模块呢?

14.png

Python语言提供了import语句用于导入外部模块,它的语法如下:

15.png

上图中的modulename是模块名称,name是该模块的别名,在调用模块函数时,可以直接使用name作为模块的名称。

16.png

案例01的代码演示了如何导入及调用模块内部函数的方法。

在案例01的代码中,使用import语句导入了“rectangle.py”模块,用于计算长方形的面积,导入模块时只写模块名称就可以了,文件扩展名不需要写。导入的模块别名是rect,后面的语句可以直接使用rect来调用模块内部的函数。

调用导入模块内部函数的语法如下:

17.png

S = rect.area() 语句用于调用“rectangle.py”模块的area函数,来计算长方形的面积,area函数返回长方形的面积,并赋值给S变量。

9、主模块编程思路与程序流程图

模块划分完成后,阿萌开始考虑程序主模块的编写。

程序支持长方形、正方形、平行四边形和三角形的面积计算,程序启动后,会进入选择状态,学生可以选择其中的一个状态,该状态对应计算一个几何图形的面积,面积计算完成后,程序会再次进入选择状态。

选择状态为1、2、3、4,状态1计算长方形的面积,状态2计算正方形的面积,状态3计算平行四边形的面积,状态4计算三角形的面积。

18.png

程序的具体流程为:

(1)程序输出提示信息,要求学生选择状态,或者输入quit退出程序;

(2)学生选择状态,程序调用状态对应的模块来计算几何图形的面积;

(3)面积计算完成,程序会再次进入选择状态,等待学生的选择;

(4)如果学生输入quit,退出程序。

19.png

11、程序代码及解读

阿萌编写的程序代码。

'''
程序文件:main.py
功能描述:面积计算器主程序
代码编写时间:2020/04/14
作者:编程训练营
'''
# 导入模块
import rectangle as rect
import square as sq
import paraller as pa
import triangle as tr
 
# 程序入口
if __name__ == '__main__':
       
    while(True):
        # 输出提示信息
        print("-------欢迎使用面积计算器------\n")
        print("按下数字1键:计算长方形面积\n")
        print("按下数字2键:计算正方形面积\n")
        print("按下数字3键:计算平行四边形面积\n")
        print("按下数字4键:计算三角形面积\n")
        print("输入quit,退出程序\n")
 
        # 获取学生的输入
        num = input("请输入:")
       
        # 输入数字1?
        if num == "1":
            print("长方形的面积为:" + str(rect.area()))
           
        # 输入数字2?
        elif num == "2":
            print("正方形的面积为:" + str(sq.area()))
 
        # 输入数字3?
        elif num == "3":
            print("平行四边形的面积为:" + str(pa.area()))
 
        # 输入数字4?
        elif num == "4":
            print("三角形的面积为:" + str(tr.area()))
 
        # 输入quit?
        elif num == "quit":
            break


代码解读

使用import语句导入计算长方形、正方形、平行四边形和三角形面积的模块文件。

在while循环体内,首先输出提示信息,提示学生按下不同的数字键,选择计算对应的几何体面积,也可以输入quit退出程序。

然后使用input函数获取学生的输入,使用多重条件结构来判断学生的输入。如果输入的是1、2、3、4数字字符,分别调用对应的模块函数来计算几何体的面积。如果输入的是quit,调用break语句退出循环,程序结束。

20.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论