轨道
/
Python
Python
/
练习
/
回文乘积
回文乘积

回文乘积

中等

说明

检测给定范围内的回文乘积。

回文数是指将其数字顺序颠倒后仍然保持不变的数字。例如,121是回文数,而112不是。

给定一个数字范围,找出该范围内两个数相乘所得的最大和最小回文数。

你的解答应返回最大和最小的回文数,以及它们在范围内的因数。如果最大或最小的回文数在范围内有多对因数,则返回所有因数对。

示例 1

给定范围[1, 9](包含两端)……

再给定该范围内所有可能的乘积列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

回文乘积都是一位数(在本例中): [1, 2, 3, 4, 5, 6, 7, 8, 9]

最小的回文乘积是1。 它的因数是(1, 1)。 最大的回文乘积是9。 它的因数是(1, 9)和(3, 3)。

示例 2

给定范围[10, 99](包含两端)……

最小的回文乘积是121。 它的因数是(11, 11)。 最大的回文乘积是9009。 它的因数是(91, 99)。

关于smallest和largest实现的说明:

这两个函数都必须接收两个关键字参数:

  • max_factor: int
  • min_factor: int,默认值为 0

它们的返回值必须是一个tuple -- (value, factors),其中value是回文数本身,factors是一个iterable,按任意顺序包含该回文数的两个因数。

异常消息

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

这道练习要求你在largest()或smallest()函数收到一对不在正确范围内的因数时,使用raise 语句“抛出”一个ValueError。只有当你既raise了这个exception,又为它附上一条消息时,测试才会通过。

要想在抛出ValueError时附带消息,把这条消息写成exception类型的一个实参:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Python Exercism

准备好开始 回文乘积 了吗?

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