Imprimer pi à un nombre de décimales
L'un des défis sur w3resources est à imprimer pi à n décimales. Voici mon code:
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)
Pour quelque raison que ce soit, il imprime automatiquement pi sans prise en compte de toutes les entrées. Toute aide serait super 🙂
- Le défi est à imprimer
pi
arrondi à n chiffres après la virgule, ou d'imprimer les n premières décimales depi
?
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas simplement
format
à l'aide denumber_of_places
:Et plus généralement:
Dans votre approche originale, je suppose que vous êtes en train de choisir un nombre de chiffres à l'aide de
number_of_places
comme variable de contrôle de la boucle, ce qui est tout à fait hacky mais ne fonctionne pas dans votre cas, parce que la premièrenumber_of_digits
entré par l'utilisateur n'est jamais utilisé. C'est au lieu d'être remplacé par l'iteratee les valeurs de lapi
chaîne.Les solutions proposées à l'aide de
np.pi
,math.pi
, etc ne fonctionne que pour la double précision (~14 chiffres), afin d'obtenir une meilleure précision dont vous avez besoin pour une utilisation en multi-précision, par exemple les mpmath paquetÀ l'aide de
np.pi
donne le mauvais résultatComparer à la valeur true:
Votre solution semble être en boucle sur la mauvaise chose:
Pour 9 places, cela s'avère être quelque chose comme:
Qui passe en boucle trois fois, une pour chaque "9" dans la chaîne. Nous pouvons réparer votre code:
Mais il y a encore des limites
n
à moins que lelen(str(math.pi))
, à moins de 15 en Python 2. Étant donné un sérieuxn
, il se casse:De faire mieux, nous devons calculer PI nous-mêmes-à l'aide d'une série d'évaluation est une démarche:
Maintenant, nous pouvons prendre une grande valeur de
n
:Que cette question a déjà des réponses utiles, je voudrais juste partager ce que j'ai créé un programme pour le même but, qui est très similaire à celui de la question.
Merci pour la Lecture.
Par exemple le
mpmath
paquetPourquoi ne pas simplement utiliser: