2017-10-03 6 views
2

私は初心者です。私は与えられた範囲の一連のアームストロング番号を印刷するためのプログラムを作成します。しかし、何も表示されていない、私は私の間違いを見つけることができません。だから私のコードを見て、私の間違いを見つけるのを助けてください。Pythonを使用して一連のアームストロング番号を表示するとエラーが表示されます

def armstrong(): 
    r = int(input("Enter range :")) 

    for i in range(2,r+1): 
    power = len(str(i)) 
    temp = i 
    sum = 0 

    while temp>0: 
     rem = temp%10 
     sum = sum + rem**power 
     temp = temp/10 

    if sum == i: 
     print(" "+i) 

armstrong() 
+1

エラーメッセージが表示されることをお勧めします。 – jpa

+0

申し訳ありません、私の間違い。 rの値に1000を入力すると何も印刷されません。 –

答えて

1

sumtemp/10は、あなたが期待している答えを与えるものではありませんので、iに等しいことはありません。パイソン3において

15/10浮動小数点数1.5はなく、それは、Python 2(またはいくつかの他の言語)であったであろうように整数1です。あなたは、この変更に伴い

while temp>0: 
    temp, rem = divmod(temp, 10) 
    sum = sum + rem**power 

:床部門(Pythonの2動作)を取得するには、内蔵のdivmod機能を一度//%両方を行う(私の好み)//演算子を使用する必要がある、またはintstrを連結できないという新しいエラーが発生します(バージョンによってエラーは若干異なります)。しかし、そのための修正は簡単です:連結する前にiを文字列に変換してください。

print(" " + str(i)) 
+0

このすばらしい説明のための@trentclに感謝しました。もう一度ありがとうございます。 –

関連する問題