2017-03-06 3 views
0
def isArmstrongNumber(n): 
    a = [] 
    t = n 
    while t > 0: 
     a.append(t % 10) 
     t /= 10 
    l = len(a) 
    return sum([x ** l for x in a]) == n 

for x in range(100,1000): 
    if isArmstrongNumber(x): 
     print(x) 

============================= C'est une question au sujet de la ArmstrongNumber , quand je F5 ce code, il me montre OverflowError: int trop grand pour convertir en float. Alors, que puis-je faire pour résoudre ce problème? Ps: Je l'exécute avec python3.5 enter image description hereOverflowError: int trop grand pour convertir flotter

Répondre

1

Python prend en charge des entiers de taille arbitraire, mais utilise également des nombres à virgule flottante. Certains nombres entiers sont beaucoup trop gros pour être représentés avec précision par des nombres à virgule flottante, c'est pourquoi vous obtenez votre erreur.

Remplacer /= avec //= utiliser la division sol (qui retourne un entier) au lieu de la division « true » (qui retourne un flotteur), puisque c'est ce que t /= 10 est censé faire dans votre boucle.