我正在编写一个小函数,将整数转换为其分数形式的倒数。这是我到目前为止定义函数的方式:
def reciprocal (number):
return "1/",number
这种方法有效,但问题是它没有按照我的意愿在屏幕上打印答案,因为我说print reciprocal(3)
它会在屏幕上显示('1/', 3)
而不是1/3
。我在代码中尝试了各种语音标记和括号的组合,但答案仍然有额外的括号和后面的标记。我使用python 2.7.10,有没有办法摆脱这些?或者是否有任何其他简单的方法来表示一个整数作为它的倒数以分数形式摆脱它们?谢谢
答案 0 :(得分:4)
是。因为这一行实际上正在做的是返回一个元组:
return "1/",number
如果您只是打印:
type(reciprocal(3))
您会看到结果为tuple
。
为了保持以下功能:
print(reciprocal(3))
您可能希望这样做:
return "1/{}".format(number)
现在,上面的内容实际上会返回一个字符串而不是一个元组。以上是使用字符串格式方法,您可以阅读here。最终你正在做的是创建一个看起来像1 / x的字符串,其中x将是数字。表示x的方法是使用花括号,然后使用占位符来设置传递给format
的任何内容。阅读文档中的更多内容以了解其工作原理。
为了帮助扩展它,分离时的实际情况是:
s = "1/"
现在,您希望能够设置参数number
。字符串对象支持多种方法,其中一种方法是format
。所以你实际上可以简单地称它为:s.format()
。然而,这不会简单地以你想要的方式工作。因此,根据文档,为了使用此format
方法,您需要在字符串中设置您想要设置要在字符串中放置的参数的确切位置。这是通过使用占位符字符{}
来表示的。所以:
s = "1/"
现在将
s = "1/{}".format(number)
我们将{}
设置为我们想要number
所在位置的占位符,并通过将number
传递给<{1}}来指定将在该占位符中的格式。
如果你实际打印结果的type
,你可以进一步看到你现在有了一个字符串:
print(type(reciprocal(3)))
您会看到它现在是str
类型。
作为Python中的一个注释,您可以使用逗号分隔值创建元组:
>>> d = 1, 2
>>> type(d)
<class 'tuple'>
这正是你的函数返回元组的原因,因为你返回的两个值只是用逗号分隔。
答案 1 :(得分:2)
你可以试试这个:
def reciprocal (number):
return "1/{}".format(number)
print reciprocal(4)
print reciprocal(100)
输出:
1/4
1/100
答案 2 :(得分:1)
现在你正在返回一个由字符串组成的元组&#34; 1 /&#34;和你的号码因为逗号。我想你想要做的只是返回一个字符串。
像return "1/" + str(number)
答案 3 :(得分:0)
如果你想打印一支电子管,也许你可以试试
return ('1/', number)
def reciprocal(number):
return ('1/', number)
print(reciprocal(4))
In [5]: print (reciprocal(4))
('1/', 4)