如何在Python中创建小费和分账计算器

让我们学习如何在Python中创建一个小费和拆分计算器。

这是一个非常棒的个人项目,可以用来练习你的Python技能。此外,本教程将教你如何以两种方式创建应用程序,首先是作为命令行工具,其次是作为GUI工具。

预览

我们将以两种方式构建应用程序。首先,我们将构建一个简单的Python shell脚本,提示用户输入并写入输出。

其次,我们将使用Tkinter为程序创建一个图形用户界面。

程序规格

该程序接收三个输入:

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

利用这些输入,程序将计算以下输出:

  • 每个人对账单的贡献
  • 每个人对小费的贡献
  • 每个人的总贡献

算法

为了实现这一点,小费和拆分计算器将遵循下面的一个非常简单的算法:

  1. 接收输入:bill_amounttip_percentagenumber_of_people
  2. 通过将bill_amount乘以tip_percentage / 100来计算小费amount
  3. bill_amount除以number_of_people得到每个人对账单的贡献。
  4. tip_amount除以number_of_people得到每个人对小费的贡献。
  5. 最后,将账单和小费的贡献相加,得到总应付金额。

先决条件

要按照本教程进行操作,您应该了解和理解Python编程语言。对于本教程,需要掌握基本概念,包括函数和类。

此外,您应该已经在您的系统中安装了Python。如果尚未安装,请转到Python website下载并安装。或者,Geekflare提供了一个online Python compiler,您可以在浏览器中运行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构建小费和分摊计算器

在本教程的下一部分中,我们将实现相同的应用程序,但使用图形用户界面(GUI)。为了构建GUI,我们将使用一个名为Tkinter的包。

设置

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

但是,在默认安装了Python的Linux机器上,为了节省空间,TKinter没有预安装。因此,你需要使用以下命令手动安装:

sudo apt-get install python3-tk

创建项目文件

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

touch gui.py

导入Tkinter

接下来,通过将以下行添加到文件的顶部导入Tkinter包。

import tkinter from 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="输入")

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

接下来,它为三个输入创建了标签和输入字段:bill_amounttip_percentagenumber_of_people。最后,它创建了一个按钮,用户将点击该按钮来运行计算。

创建一个计算输出的函数

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

def handle_click(event):
    # 使用get方法从输入字段中收集输入
    # 还将输入从默认字符串数据类型转换为对应类型
    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} n每人小费金额:{tip_contribution} n每人总金额:{total_contribution}'
    
    # 为输出文本创建一个标签
    tk.Label(text=output).pack()

    # 更新窗口以反映UI更改
    window.update()

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

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

接下来,我们将事件处理程序绑定到按钮点击事件上。Tkinter中的按钮点击事件用字符串'‘表示。要将事件绑定到事件处理程序,我们使用按钮的bind方法。在函数定义下面添加以下代码行:

btn_enter.bind('', handle_click)
btn_enter.pack()

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

window.mainloop()

至此,我们完成了!

测试小费和分账计算器

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

python3 gui.py

这将打开以下窗口:

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

最后的话

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

接下来,您可以查看how to create a random password generator in Python

类似文章