2017-12-06 4 views
1

以下は私のコードですべての除数印刷:番号を依頼するプログラムを作成し、

num= int(input("Please enter number")) 
lista= [] 

for i in range(1,100): 
    if num%i ==0: 
     lista.append(i) 
print(i) 

をしかし、私は同じ実行したときに、私は以下の出力を得る:上記によると

Please enter number24 
99 

Process finished with exit code 0 

を論理、私の理解は、指定された範囲のためにループが99回繰り返され、残りが "i"のためにゼロであるならば、それはリストに追加されるべきです。私の論理が間違っている理由と理由は不明です

+0

あなたはあなたの説明に誤りがあります。 私たちはあなたを助けることができるように、99 は、あなたがそれを修正することができnumber24を入力してください? –

+1

あなたのロジックは問題ありません。間違った変数を印刷しているだけです。 'i'は99ですが、' lista'は除数を含むものなので、それを印刷する必要があります。 – Zinki

答えて

2
  1. iを印刷していますが、ループの最後に完全なリストを印刷する必要があります。
  2. 除数については[1, 100)の範囲で反復しますが、この単純な方法ですべての除数を見つけるには、理想的には[1, num)の範囲で反復処理する必要があります。たとえば、1000は2000年の約数ですが、あなたのアプローチではこのケースを逃すでしょう。
  3. listaの代わりに、より可読性の高い変数名としてlist_divisorsを使用できます。

だからあなたのコードは次のようになります。

num = int(input("Please enter number")) 
list_divisors = [] 

for i in range(1, num): 
    if num % i ==0: 
     list_divisors.append(i) 
print(list_divisors) 
+0

'sqrt(num)'まで反復して、除数の対の残りの半分が何であるかを調べる方が良いです。 – RoachLord

+0

@RoachLordこれは私がOPのアプローチをナイーブにした理由です。しかし、これはOPの問題の根本的な原因ではないため、私は答えにそれを含めていませんでした。 –

+0

@無無 - 有効です。 – RoachLord

関連する問題