如何在 Python 3 中制作计算器程序

您所在的位置:网站首页 python编写加法程序 如何在 Python 3 中制作计算器程序

如何在 Python 3 中制作计算器程序

2023-03-26 03:50| 来源: 网络整理| 查看: 265

简介

Python 编程语言是处理数字和评估数学表达式时使用的绝佳工具。这种品质可以用来制作有用的程序。

本教程介绍了一个学习练习,概述了如何在 Python 3 中制作命令行计算器程序。这个计算器将只能执行基本的算术运算,但本指南的最后一步可作为您如何改进的起点代码来创建一个更强大的计算器。

我们将使用数学运算符,变量,条件语句,[函数]]# 4 我们的用户输入

先决条件

对于本教程,您应该在本地计算机上安装 Python 3,并在计算机上设置编程环境。如果您需要安装 Python 或设置环境,您可以按照适用于您的操作系统的指南来完成。

第一步——提示用户输入

当人类提供方程式供计算机求解时,计算器效果最佳。您将在人类输入他们希望计算机使用的数字时开始编写程序。

首先,您将为您的程序创建一个文件。对于本例,我们将使用文本编辑器nano并将文件命名为calculator.py:

nano calculator.py

接下来,您将向此文件添加内容以运行您的程序。对于这个程序,您将让用户输入两个数字,因此指示程序提示用户输入两个数字。您可以通过使用 Python 的内置input()函数来接受来自键盘的用户生成的输入来做到这一点。在input()函数的括号内,您可以传递一个字符串来提示用户,然后将用户的输入分配给一个变量。请记住,在要求输入时,在字符串末尾包含一个空格会很有帮助,以便在用户输入和提示字符串之间有一个空格:

计算器.py

number_1 = input('Enter your first number: ') number_2 = input('Enter your second number: ')

写了两行之后,你应该在运行之前保存程序。如果您使用的是nano,您可以通过按CTRL + X然后按Y和ENTER退出。

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

python calculator.py

这将开始您的程序提示,您可以在终端窗口中做出响应:

OutputEnter your first number: 5 Enter your second number: 7

如果你运行这个程序几次并改变你的输入,你会注意到你可以在提示时输入任何你想要的东西,包括单词、符号、空格或回车键。这是因为input()以字符串的形式接收数据,并且不知道您正在寻找数字。

您需要在此程序中使用数字有两个原因:

使程序能够执行数学计算

验证用户的输入是数字字符串

根据计算器的需要,您可能希望将来自input()函数的字符串转换为整数或浮点数。对于本教程,整数适合我们的目的,因此将input()函数包装在int()函数中到将输入转换为整数数据类型:

计算器.py

number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: '))

现在,如果您运行程序并输入两个整数,您将不会遇到错误:

OutputEnter your first number: 23 Enter your second number: 674

但是,如果您输入字母、符号或任何其他非整数,您将遇到以下错误:

OutputEnter your first number: sammy Traceback (most recent call last): File "testing.py", line 1, in number_1 = int(input('Enter your first number: ')) ValueError: invalid literal for int() with base 10: 'sammy'

到目前为止,您已经设置了两个变量来以整数数据类型的形式存储用户输入。您还可以尝试将输入转换为浮点数。

第二步——添加操作符

在程序完成之前,您将总共添加四个数学运算符:+用于加法,-用于减法,*用于乘法,/用于除法。

在构建程序时,您需要确保每个部分都正常运行,因此从设置加法开始。您将在打印函数中添加这两个数字,以便使用计算器的人能够看到内容:

计算器.py

number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: ')) print(number_1 + number_2)

运行程序并在提示时输入两个数字以确保它按预期工作:

OutputEnter your first number: 8 Enter your second number: 3 11

输出显示程序运行正常。现在,为用户添加更多上下文,以便在整个程序运行时充分了解情况。为此,请使用字符串格式化程序帮助正确格式化文本并提供反馈。您希望用户收到有关他们正在输入的数字以及与生成的结果一起使用的运算符的确认信息:

计算器.py

number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: ')) print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2)

现在,当您运行程序时,您将获得额外的输出,让用户确认程序正在执行的数学表达式:

OutputEnter your first number: 90 Enter your second number: 717 90 + 717 = 807

使用字符串格式化程序可以为用户提供更多反馈。

此时,您可以使用与加法相同的格式将其余运算符添加到程序中:

计算器.py

number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: ')) # Addition print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2) # Subtraction print('{} - {} = '.format(number_1, number_2)) print(number_1 - number_2) # Multiplication print('{} * {} = '.format(number_1, number_2)) print(number_1 * number_2) # Division print('{} / {} = '.format(number_1, number_2)) print(number_1 / number_2)

在这里,您要将剩余的运算符-、*和/添加到上面的程序中。如果此时运行程序,程序将执行上述所有操作。但是,您希望限制程序一次执行一项操作。为此,您将使用条件语句。

第三步——添加条件语句

calculator.py程序的目标是让用户能够在不同的运营商中进行选择。首先在程序顶部添加一些信息,以及要做出的选择,以便人们知道该做什么。

使用三引号在几个不同的行上写一个字符串:

''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division '''

该程序使用每个运算符符号供用户选择,因此如果用户想要执行除法,他们将输入/。不过,您可以选择任何您想要的符号,例如1 for addition或b for subtraction。

因为你要求用户输入,所以你想使用input()函数。将字符串放入input()函数中,并将该输入的值传递给一个变量,您将其命名为operation:

计算器.py

operation = input(''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division ''') number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: ')) print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2) print('{} - {} = '.format(number_1, number_2)) print(number_1 - number_2) print('{} * {} = '.format(number_1, number_2)) print(number_1 * number_2) print('{} / {} = '.format(number_1, number_2)) print(number_1 / number_2)

此时,如果您运行程序,无论您在第一个提示符下输入什么内容,都不会发生任何事情。要更正此问题,请在程序中添加一些条件语句。由于您对程序的结构,if语句将是执行加法的地方,每个其他运算符将有 3 个 else-if 或elif语句,并且else语句将用于处理错误如果用户没有输入操作符符号:

计算器.py

operation = input(''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division ''') number_1 = int(input('Enter your first number: ')) number_2 = int(input('Enter your second number: ')) if operation == '+': print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2) elif operation == '-': print('{} - {} = '.format(number_1, number_2)) print(number_1 - number_2) elif operation == '*': print('{} * {} = '.format(number_1, number_2)) print(number_1 * number_2) elif operation == '/': print('{} / {} = '.format(number_1, number_2)) print(number_1 / number_2) else: print('You have not typed a valid operator, please run the program again.')

要浏览这个程序,首先它会提示用户输入一个操作符号。例如,假设用户输入*进行乘法运算。接下来,程序要求输入两个数字,用户输入58和40。此时,程序显示执行的方程和乘积:

OutputPlease type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division * Please enter the first number: 58 Please enter the second number: 40 58 * 40 = 2320

由于您的程序结构,如果用户在第一次提示时要求操作时输入%,他们将在输入数字后才会收到反馈以再次尝试。您可能需要考虑其他可能的选项来处理各种情况。

此时,您拥有一个功能齐全的程序,但如果不再次运行该程序,您将无法执行第二次或第三次操作。下一步涉及定义一些函数以将此功能添加到程序中。

第四步——定义函数

为了处理用户想要多次执行程序的能力,您将定义一些函数。首先,将您现有的代码块放入一个函数中。将函数命名为calculate()并在函数本身内添加额外的缩进层。为确保程序运行,您还将调用文件底部的函数:

计算器.py

# Define our function def calculate(): operation = input(''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division ''') number_1 = int(input('Please enter the first number: ')) number_2 = int(input('Please enter the second number: ')) if operation == '+': print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2) elif operation == '-': print('{} - {} = '.format(number_1, number_2)) print(number_1 - number_2) elif operation == '*': print('{} * {} = '.format(number_1, number_2)) print(number_1 * number_2) elif operation == '/': print('{} / {} = '.format(number_1, number_2)) print(number_1 / number_2) else: print('You have not typed a valid operator, please run the program again.') # Call calculate() outside of the function calculate()

接下来,创建由更多条件语句组成的第二个函数。在此代码块中,您希望让用户选择是否要再次计算。您可以根据计算器的条件语句进行此操作,但在这种情况下,您将只有一个if、一个elif和一个else来处理错误。

将此函数命名为again(),并在def calculate():代码块之后添加:

计算器.py

... # Define again() function to ask user if they want to use the calculator again def again(): # Take input from user calc_again = input(''' Do you want to calculate again? Please type Y for YES or N for NO. ''') # If user types Y, run the calculate() function if calc_again == 'Y': calculate() # If user types N, say good-bye to the user and end the program elif calc_again == 'N': print('See you later.') # If user types another key, run the function again else: again() # Call calculate() outside of the function calculate()

尽管上面的 else 语句有一些错误处理,但您可能更清楚地接受,例如,除了大写Y和N之外,还接受小写y和n。为此,添加字符串函数str.upper():

计算器.py

... def again(): calc_again = input(''' Do you want to calculate again? Please type Y for YES or N for NO. ''') # Accept 'y' or 'Y' by adding str.upper() if calc_again.upper() == 'Y': calculate() # Accept 'n' or 'N' by adding str.upper() elif calc_again.upper() == 'N': print('See you later.') else: again() ...

此时,您应该将again()函数添加到calculate()函数的末尾,以便它会触发询问用户是否要继续的代码:

计算器.py

def calculate(): operation = input(''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division ''') number_1 = int(input('Please enter the first number: ')) number_2 = int(input('Please enter the second number: ')) if operation == '+': print('{} + {} = '.format(number_1, number_2)) print(number_1 + number_2) elif operation == '-': print('{} - {} = '.format(number_1, number_2)) print(number_1 - number_2) elif operation == '*': print('{} * {} = '.format(number_1, number_2)) print(number_1 * number_2) elif operation == '/': print('{} / {} = '.format(number_1, number_2)) print(number_1 / number_2) else: print('You have not typed a valid operator, please run the program again.') # Add again() function to calculate() function again() def again(): calc_again = input(''' Do you want to calculate again? Please type Y for YES or N for NO. ''') if calc_again.upper() == 'Y': calculate() elif calc_again.upper() == 'N': print('See you later.') else: again() calculate()

您现在可以在终端窗口中使用python calculator.py运行您的程序,并且您可以计算任意多次。

第五步——改进代码

现在你有了一个不错的、功能齐全的程序。但是,您可以做更多的事情来改进此代码。您可以添加一个欢迎功能,例如,在程序代码的顶部欢迎人们加入程序,如下所示:

def welcome(): print(''' Welcome to Calculator ''') ... # Don’t forget to call the function welcome() calculate()

有机会在整个程序中引入更多的错误处理。对于初学者,即使用户在要求输入数字时键入plankton,您也可以确保程序继续运行。由于程序现在是,如果number_1和number_2不是整数,用户会得到一个错误,程序将停止运行。此外,对于用户选择除法运算符 (/) 并输入0作为第二个数字 (number_2) 的情况,用户将收到ZeroDivisionError: division by zero错误。为此,您可能希望使用带有try ... except语句的异常处理。

本练习将您限制为四个运算符,但您可以添加其他运算符,如下所示:

... operation = input(''' Please type in the math operation you would like to complete: + for addition - for subtraction * for multiplication / for division ** for power % for modulo ''') ... # Don’t forget to add more conditional statements to solve for power and modulo

此外,您可能希望使用循环语句重写部分程序。

有很多方法可以处理错误以及修改和改进每个编码项目。重要的是要记住,没有一种正确的方法可以解决我们遇到的问题。

结论

本教程介绍了一种在命令行上构建计算器的可能方法。完成本教程后,您将能够修改和改进代码并处理需要用户在命令行上输入的其他项目。

我们有兴趣看到您对这个基本命令行计算器项目的解决方案!请随时在评论中发布您的计算器项目。

接下来,您可能想要创建一个基于文本的游戏,例如井字游戏或石头剪刀布。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3