2017-03-06 4 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) 

============================= zu schweben zu konvertieren, das ist eine etwa ArmstrongNumber Frage , wenn ich diesen Code F5, ist es mir OverflowError zeigen: int zu groß, um in Float zu konvertieren. SO, was kann ich tun, um dies zu lösen? Ps: Ich führe es mit Python3.5 enter image description hereOverflowError: int zu groß

Antwort

1

Python unterstützt Ganzzahlen beliebiger Größe, sondern auch Gleitkommazahlen verwendet. Es gibt einige ganze Zahlen, die viel zu groß sind, um durch Fließkommazahlen dargestellt zu werden. Deshalb erhalten Sie Ihren Fehler.

ersetzen /= mit //= Bodenteilung zu verwenden (die eine ganze Zahl zurückgibt) anstelle von „true“ Teilung (die einen Schwimmer zurückgibt), denn das ist, was t /= 10 soll in der Schleife tun.

Verwandte Themen