w3resources面临的一个挑战是将pi打印到小数点后的n位。下面是我的代码:
from math import pi
fraser = str(pi)
length_of_pi = []
number_of_places = raw_input("Enter the number of decimal places you want to
see: ")
for number_of_places in fraser:
length_of_pi.append(str(number_of_places))
print "".join(length_of_pi)
不管出于什么原因,它会自动打印pi,而不考虑任何输入。任何帮助都会很好:)
9条答案
按热度按时间4sup72z81#
建议的使用
np.pi
、math.pi
等的解决方案仅适用于双精度(~14位),要获得更高的精度,您需要使用多精度,例如mpmath包使用
np.pi
得到错误的结果与真实值比较:
3wabscal2#
为什么不直接使用
number_of_places
:更一般地说:
在你最初的方法中,我猜你试图使用
number_of_places
作为循环的控制变量来选择一个数字,这是非常古怪的,但在你的情况下不起作用,因为用户输入的初始值number_of_digits
从未被使用过。相反,它被pi
字符串中的iteratee值替换。nwsw7zdq3#
例如
mpmath
包pgpifvop4#
很棒的答案!有很多方法可以实现这一点。看看我下面使用的这个方法,它可以在小数点后的任何位置工作,直到无穷大:
祝你好运伙计!
ddhy6vgd5#
您的解决方案似乎在错误的事情上循环:
对于9个地方,结果是这样的:
它循环三次,每次循环对应字符串中的每个“9”。我们可以修复您的代码:
但这仍然限制了
n
小于len(str(math.pi))
,在Python 2中小于15。给定一个严重的n
,它会中断:为了做得更好,我们必须自己计算PI-使用系列评估是一种方法:
现在我们可以取一个很大的值
n
:htrmnn0y6#
这就是我所做的,非常初级但有效(最多15位小数):
lc8prwob7#
由于这个问题已经有了有用的答案,我只想分享我如何创建一个程序用于相同的目的,这是非常相似的问题。
感谢阅读。
unftdfkk8#
为什么不直接用途:
oyjwcjzk9#
对于6位十进制数字,可以使用