轨道
/
Python
Python
/
练习
/
文字题
文字题

文字题

简单

说明

解析并计算简单的数学应用题,并返回整数答案。

迭代 0:数字

不含运算的题目,其结果就是给出的那个数字。

What is 5?

结果为 5。

迭代 1:加法

把两个数字相加。

What is 5 plus 13?

结果为 18。

要能处理大数和负数。

迭代 2:减法、乘法和除法

现在,来执行另外三种运算。

What is 7 minus 5?

2

What is 6 multiplied by 4?

24

What is 25 divided by 5?

5

迭代 3:多个运算

按顺序处理一组运算。

由于这些应用题是用文字表述的,请从左到右依次计算表达式,忽略通常的运算顺序。

What is 5 plus 13 plus 6?

24

What is 3 plus 2 multiplied by 3?

15(即不是 9)

迭代 4:错误

解析器应当拒绝以下内容:

  • 不支持的运算(“What is 52 cubed?”)
  • 非数学问题(“Who is the President of the United States”)
  • 语法无效的应用题(“What is 1 plus plus 2?”)

异常信息

有时需要抛出异常。这样做时,你应该始终附上一条有意义的错误信息,说明错误的来源是什么。这能让你的代码更易读,也会大大方便调试。如果你已经知道错误来源是某种特定类型,可以选择抛出某个内置错误类型,但仍然要附上有意义的信息。

这道练习要求你使用 raise 语句,在传给answer()的问题格式错误或无效、或者包含未知运算时“抛出” ValueError。只有当你既 raise 了 exception,又给它附上一条信息,测试才会通过。 请注意:即使抛出的是同一种_错误类型_,每个场景所需的信息也不一样。 仔细查看测试。

要带着信息抛出 ValueError,请把这条信息作为实参传给 exception 类型:

# if the question contains an unknown operation.
raise ValueError("unknown operation")

# if the question is malformed or invalid.
raise ValueError("syntax error")

要在某个代码块内_处理_抛出的错误,可以使用 try-except。 try-except 块会“包裹”可能出错的代码,把所有异常映射到一个错误、多个错误,或者映射到其他用来处理问题的代码片段:

while len(equation) > 1:
        try:
           # The questionable/error-prone code goes here,in an indented block
           # It can contain statements, loops, if-else blocks, or other executable code.
           x_value, operation, y_value, *rest = equation
           ...
           ...

        except:
            # Code for what to do when an error gets thrown in the code above.
            # This could be one error, or more complicated logging, error checking and messaging.
            raise ValueError("syntax error")
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Python Exercism

准备好开始 文字题 了吗?

注册 Exercism,借助 17 个概念146 个练习 和真人导师指导,学习并掌握 Python,全部免费。