Day15:创建一个计算器
编辑日期: 2024-11-28 文章阅读: 次
Day15:创建一个计算器
上周我们一起构建了一个收据打印程序。结合本周学习的课程,我们去构建一个简单的计算器,它可以接收用户输入并且输出正确结果。 跟着今天的课程,让我们从之前的文件”Week_03”中继续学习,在文件底部新增一个单元格并标注:” Friday Project:Creating a Calculator” 。
最终设计
每周我们都要展示最终设计,本周基于逻辑而不是看起来怎么样。我们会展示构建一个计算器必须的步骤: 1. 请求用户选择他们要执行的计算 2. 请求用户输入他们要计算的数字 3. 为数学运算搭建try/except子句
-
a. 将输入数字转换为浮点型
-
b. 执行预算并且输出结果
- c. 如果触发了例外,打印错误
第一步:请求用户选择要执行的计算
我们将以上每一步的代码放在不同的单元格中。这样可以将程序按照特定的步骤分成部分,更易于测试每一个步骤。第一步是请求用户输入要执行的数学运算(加,减等等):
operation = input("Would you like to add/subtract/multiply/divide? ").lower( )
print( "You chose { }.".format(operation) ) # for testing purposes
第二步:请求输入数字,警惕顺序很重要
在第一步下面的单元格中,开始为下一步构建逻辑。这里,我们请求用户输入一对数字并且将这些数字打印出来用于测试:
if operation == "subtract" or operation == "divide":
print( "You chose { }.".format(operation) )
print("Please keep in mind that the order of your numbers matter.")
#请注意数字的顺序非常重要
num1 = input("What is the first number? ")
num2 = input("What is the second number? ")
print( "First Number: { }".format(num1) ) # for testing purposes
print( "Second Number: { }".format(num2) ) # for testing purposes
注意 如果你收到未定义的报错,请返回上一个单元格
第三步:为数学运算搭建Try/Except
第三步,也是最后一步。是尝试执行运算。在这里搭建try/except模块的原因是我们必须将用户输入转换为浮点型。我们必须预估到他们可能没有输入合适的类型。让我们看看这个单元格如何工作:
try:
num1, num2 = float(num1), float(num2)
if operation == "add":
result = num1 + num2
print( "{ } + { } = { }".format(num1, num2, result) )
elif operation == "subtract":
result = num1 - num2
print( "{ } - { } = { }".format(num1, num2, result) )
elif operation == "multiply":
result = num1 * num2
print( "{ } * { } = { }".format(num1, num2, result) )
elif operation == "divide":
result = num1 / num2
print( "{ } / { } = { }".format(num1, num2, result) )
else:
print("Sorry, but '{ }' is not an option.".format(operation) )
except:
print("Error: Improper numbers used. Please try again.")
最终输出
我们已经在3个不同的单元格中创建了程序的逻辑,现在可以把它们放进一个单元格中。移除所有测试的打印语句。本质上你可以将三个单元格中的代码粘贴到一个单元格中,结果如下:
operation = input("Would you like to add/subtract/multiply/divide? ").lower( )
if operation == "subtract" or operation == "divide":
print( "You chose { }.".format(operation) )
print("Please keep in mind that the order of your numbers matter.")
#请注意数字的顺序非常重要
num1 = input("What is the first number? ")
num2 = input("What is the second number? ")
try:
num1, num2 = float(num1), float(num2)
if operation == "add":
result = num1 + num2
print( "{ } + { } = { }".format(num1, num2, result) )
elif operation == "subtract":
result = num1 - num2
print( "{ } - { } = { }".format(num1, num2, result) )
elif operation == "multiply":
result = num1 * num2
print( "{ } * { } = { }".format(num1, num2, result) )
elif operation == "divide":
result = num1 / num2
print( "{ } / { } = { }".format(num1, num2, result) )
else:
print("Sorry, but '{ }' is not an option.".format(operation) )
except:
print("Error: Improper numbers used. Please try again.")
恭喜完成了另一个项目。这可能是最简单的计算器,我们已经展示了使用逻辑,获取用户输入并转换和检查错误的能力。
一周总结
多累的一周啊!我们已经学习了如何与用户交互,可以执行分支语句。这让我们可以使用逻辑构建项目,让项目基于程序中的信息执行特定代码。记住最重要的概念是条件语句和try/except模块。知道捕捉错误和错误导致程序崩溃的区别非常重要。我们要在错误可能会出现在程序中的时候就捕捉它。下周我们将学习循环以及如何一直反复运行代码直到不想再运行。
挑战问题的解答
如果运行了挑战问题的代码,你会发现出现错误。这是因为我们在申明之前就尝试使用”element”变量。如果你调换代码的顺序,程序就可以正常运行。
本周挑战
通过以下挑战测试你的技能: 1. 颠倒数字:改变计算程序让数字的顺序不再重要。这里有几种方法达到同样的结果,一种是询问用户是否愿意颠倒数字的位置。 2. 年龄分组:请求用户输入他们的年龄,基于他们的输入,输出如下分组中的一个: - a. 0到12岁为” Kid” - b. 13到19岁为” Teenager” - c. 13到19岁为” Young Adult” - d. 13到19岁为” Adult” - e. 65岁以上为” Senior” 3. 基于文本的RPG: 这是一个开放式结局的练习。创建一个有故事线同时基于文本的RPG。接收用户输入并且给他们一组选择,然后基于选择,他们可以进入不同的路劲。你可以基于故事的长度使用几个分支语句。