如何在 Python 中创建提示和拆分计算器

使用Python构建小费和分摊计算器

本文将指导您如何使用Python创建小费和分摊计算器。这是一个绝佳的个人项目,可以帮助您练习Python编程技巧。此外,本教程将展示如何以两种方式构建此应用程序:一种是命令行工具,另一种是图形用户界面(GUI)工具。

功能预览

我们将采用两种方法构建此应用程序。首先,我们将编写一个简单的Python脚本,该脚本通过命令行接收用户输入并输出结果。

其次,我们将使用Tkinter库为该程序创建一个图形界面,提供更直观的用户体验。

程序功能定义

此程序需要接收以下三个输入值:

  • 账单总额
  • 小费百分比
  • 分摊账单的人数

基于这些输入,程序将计算并输出:

  • 每人应付的账单金额
  • 每人应付的小费金额
  • 每人应付的总金额

算法流程

小费和分摊计算器将遵循以下简明算法:

  1. 获取输入:账单总额 (bill_amount), 小费百分比 (tip_percentage), 分摊人数 (number_of_people)。
  2. 计算小费金额: tip_amount = bill_amount * tip_percentage / 100
  3. 计算每人应付的账单金额:bill_contribution = bill_amount / number_of_people
  4. 计算每人应付的小费金额:tip_contribution = tip_amount / number_of_people
  5. 计算每人应付的总金额:total_contribution = bill_contribution + tip_contribution

前提条件

要学习本教程,您需要具备Python编程语言的基础知识,包括函数和类的概念。

此外,您的计算机上应已安装Python。 如果尚未安装,请前往Python官方网站下载并安装。或者,您可以使用techblik.com提供的在线Python编译器,无需本地配置即可在浏览器中运行Python代码。

构建命令行计算器

创建项目目录

首先,在您的计算机上创建一个新的空文件夹。例如,在Ubuntu 22.04系统中,您可以使用以下命令创建并进入该文件夹:

mkdir tip-calculator && cd tip-calculator

创建Python文件

接下来,创建一个Python脚本文件,我们将在此文件中编写代码。 使用touch命令即可创建:

touch main.py

使用代码编辑器打开脚本文件

使用您偏好的代码编辑器打开此文件,开始编写代码。我将使用nano,一个基于终端的文本编辑器。

nano main.py

接收用户输入

在文件顶部添加以下代码行以接收用户输入:

        # 获取账单总额(浮点数)
        bill_amount = float(input("账单总额:"))
        
        # 获取小费百分比(浮点数)
        tip_percentage = float(input("小费百分比:"))
        
        # 获取分摊人数(整数)
        number_of_people = int(input("分摊人数:"))
    

这段代码接收用户输入,并将其数据类型从字符串转换为最合适的类型。

计算小费金额

接下来,计算小费金额:

tip_amount = bill_amount * tip_percentage / 100

计算每人应付金额

计算每人应付的账单金额和小费金额:

        # 计算每人应付的账单金额
        bill_contribution = bill_amount / number_of_people
        
        # 计算每人应付的小费金额
        tip_contribution = tip_amount / number_of_people
    

计算总金额

计算每人应付的总金额:

total_contribution = bill_contribution + tip_contribution

显示结果

向用户输出计算结果:

        # 输出结果
        print("每人应付账单金额:", bill_contribution)
        print("每人应付小费金额:", tip_contribution)
        print("每人应付总金额:", total_contribution)
    

测试计算器

最终的脚本文件应如下所示:

        # 获取账单总额(浮点数)
        bill_amount = float(input("账单总额:"))
        
        # 获取小费百分比(浮点数)
        tip_percentage = float(input("小费百分比:"))
        
        # 获取分摊人数(整数)
        number_of_people = int(input("分摊人数:"))
        
        tip_amount = bill_amount * tip_percentage / 100
        
        # 计算每人应付的账单金额
        bill_contribution = bill_amount / number_of_people
        
        # 计算每人应付的小费金额
        tip_contribution = tip_amount / number_of_people
        
        total_contribution = bill_contribution + tip_contribution
        
        # 输出结果
        print("每人应付账单金额:", bill_contribution)
        print("每人应付小费金额:", tip_contribution)
        print("每人应付总金额:", total_contribution)
    

现在,您可以使用以下命令运行此应用程序进行测试:

python3 main.py

使用GUI构建计算器

本教程的下一部分将使用图形用户界面来实现相同的应用程序。 我们将使用Tkinter库来构建GUI。

环境配置

Tkinter是Python标准库中的一个内置库。这意味着在安装Python时它默认会被安装。

但是,在默认安装Python的Linux系统上,为了节省空间,TKinter可能未预先安装。您可以使用以下命令手动安装它:

sudo apt-get install python3-tk

创建项目文件

首先,创建一个用于存储Python脚本的文件。创建文件后,使用您喜欢的文本编辑器打开它。

touch gui.py

导入Tkinter

通过在文件顶部添加以下代码行来导入Tkinter库:

import tkinter as tk

创建用户界面

现在,我们可以开始创建用户界面:

        # 创建窗口
        window = tk.Tk()
        
        # 创建窗口标题
        tk.Label(text="小费和分摊计算器").pack()
        
        # 创建账单输入框
        tk.Label(text="输入账单总额").pack()
        ent_bill = tk.Entry(width=40)
        ent_bill.pack()
        
        # 创建小费百分比输入框
        tk.Label(text="输入小费百分比").pack()
        ent_tip = tk.Entry(width=40)
        ent_tip.pack()
        
        # 创建分摊人数输入框
        tk.Label(text="输入分摊人数").pack()
        ent_people = tk.Entry(width=40)
        ent_people.pack()
        
        # 创建“计算”按钮
        btn_enter = tk.Button(text="计算")
    

上面的代码创建了一个包含所有用户界面控件的窗口。此外,它还创建了一个标签用作窗口标题。

接下来,它为三个输入(账单总额、小费百分比和分摊人数)创建了标签和输入框。最后,它创建了一个按钮,用户点击该按钮即可运行计算。

创建计算函数

接下来,我们可以创建一个函数来处理“计算”按钮的点击事件。此函数将获取输入框中的值,并使用前面提到的算法计算输出。最后,它将创建一个标签来显示输出并更新窗口。

        def handle_click(event):
            # 从输入框中获取输入,并将其转换为合适的数据类型
            bill_amount = float(ent_bill.get())
            tip_percentage = float(ent_tip.get())
            number_of_people = int(ent_people.get())
            
            # 计算小费金额
            tip_amount = bill_amount * tip_percentage / 100
            
            # 计算每人应付的账单金额
            bill_contribution = bill_amount / number_of_people
            
            # 计算每人应付的小费金额
            tip_contribution = tip_amount / number_of_people
            
            # 计算每人应付的总金额
            total_contribution = bill_contribution + tip_contribution
            
            # 创建输出字符串
            output = f'每人应付账单:{bill_contribution:.2f} n每人应付小费:{tip_contribution:.2f} n每人应付总额:{total_contribution:.2f}'
            
            # 创建用于显示输出的标签
            tk.Label(text=output).pack()
            
            # 更新窗口以反映UI更改
            window.update()
    

以上代码中的函数已经通过注释解释了每个主要步骤。

将事件处理程序绑定到按钮

接下来,我们将事件处理程序绑定到按钮的单击事件。Tkinter中的按钮点击事件由字符串’<Button-1>‘表示。要将事件绑定到事件处理程序,我们使用按钮的bind方法。在函数定义下方添加以下代码:

        btn_enter.bind('<Button-1>', handle_click)
        btn_enter.pack()
    

最后,为了保持窗口运行,我们调用窗口对象的mainloop方法:

window.mainloop()

这样就完成了!

测试GUI计算器

您可以使用以下命令运行应用程序:

python3 gui.py

这将打开如下所示的窗口:

您可以使用示例输入运行计算器:

总结

在本教程中,我们以两种方式创建了小费和分摊计算器。第一种是基于终端的命令行工具。第二种是使用Python的Tkinter库实现的GUI工具。 本教程展示了如何构建一个简单的Python项目。 如果您需要复习或提高Python技能,这里有一个Datacamp课程。

接下来,您可以学习如何在Python中创建随机密码生成器。