将整数表示为分数形式的倒数的函数

Function to express an integer as its reciprocal in fraction form

我正在编写一个小函数,将整数转换为分数形式的倒数。到目前为止,这是我定义函数的方式:

    def reciprocal (number):
      return "1/",number

这种方法可行,但问题是它没有像我想的那样在屏幕上打印答案,因为说我做了 print reciprocal(3) 它会在屏幕上显示 ('1/', 3)而不是 1/3。我在代码中尝试了各种语音标记和括号的组合,但答案仍然有额外的括号和反引号。我正在使用 python 2.7.10,有什么办法可以摆脱这些吗?或者是否有任何其他简单的方法可以将整数表示为分数形式的倒数,从而消除它们?谢谢

你可以试试这个:

def reciprocal (number):
    return "1/{}".format(number)

print reciprocal(4)
print reciprocal(100)

输出:

1/4

1/100

现在您return正在创建一个由字符串“1/”和您的数字组成的元组,因为有逗号。我想你想要做的只是 return 一个字符串。

类似于return "1/" + str(number)

是的。因为这一行实际上做的是 returning 一个元组:

return "1/",number

如果你简单地打印:

type(reciprocal(3))

您将看到结果将是 tuple

为了保持功能:

print(reciprocal(3))

你会想做这样的事情:

return "1/{}".format(number)

现在,上面的内容实际上 return 你是一个字符串而不是一个元组。上面是使用字符串格式化的方法,你可以阅读一下here。最终您要做的是创建一个看起来像 1/x 的字符串,其中 x 是数字。表示 x 的方法是使用花括号,然后使用占位符来设置您传递给 format 的任何内容。阅读文档以了解其工作原理。

为了方便展开,分开后的实际样子是这样的:

s = "1/"

现在,您希望能够设置参数 number。字符串对象支持多种方法,其中一种是format。所以你实际上可以简单地称它为:s.format()。但是,这不会简单地按照您想要的方式工作。因此,根据文档,为了使用此 format 方法,您需要在字符串中设置您想要设置要放置在字符串中的参数的确切位置。这是通过使用占位符 {} 来指示这一点来完成的。所以:

s = "1/"

现在

s = "1/{}".format(number)

我们将 {} 设置为我们希望 number 所在的位置的占位符,并且我们通过传递 what 将在该占位符中分配 [= =21=] 格式化。

如果您实际上打印结果的 type,您可以进一步了解您现在如何拥有一个字符串:

print(type(reciprocal(3)))

您会看到它现在是 str 类型。

作为 Python 中的说明,您可以创建一个包含逗号分隔值的元组:

>>> d = 1, 2
>>> type(d)
<class 'tuple'>

这正是您的函数 return 使用元组的原因,因为您 return 正在使用两个仅用逗号分隔的值。