2016-09-19 1 views
-3

私は100から200までの数字を1行に10個ずつ表示し、5または6で割り切れますが両方ではないプログラムを書きます。これはこれまでの私のコードです。私はそれが基本的な問題だと知っているので、私は "ショートカット"の替わりに欠落している基本的なコードを教えてください。どんな助けもありがとう!基本ループ/ Python

def main(): 
     while (num >= 100) and (num <= 200): 
     for (num % 5 == 0) or (num % 6 == 0) 
     print (num) 

    main() 
+1

これには構文エラーOPがあります。 'for'ループは間違っていて、': 'はそれに続くものではありません(例えば、インデントがコピー/ペーストに起因すると推測しています)。有効ではない質問を投稿するのではなく、多くのPythonチュートリアルのうちの1つを見てみることをお勧めします。 –

答えて

0

コード で使用するすべての変数を初期化する必要があります。条件がfalseのときに(条件)が中断します。あなたの条件はnumに依存するので、numはコード内で決して変更されないので、無限ループが起こります。ループブロックの最後にnum = num + 1を追加する必要があります。 ここでは、各イテレータに対してforを使用しないと仮定しています。そしてあなたの問題に使った状態は間違っています。

は、このようにする必要があります:

def main(): 
    num = 100 
    while (num >= 100) and (num <= 200): 
     if ((num % 5 == 0) or (num % 6 == 0)) and (num % 30 != 0): 
      print (num) 
     num = num + 1 
main() 
1

これは、私はそれについて移動する方法をです。必要な範囲がわかっているなら、whileループを使ってforループを使うことをお勧めします。無限ループに陥る可能性は低くなります。 n変数の理由は、1行に10個の数字が必要だと言ったからです。 n変数はあなたが見つけた正しい数字の数を追跡するので、結果が10件あるときに分かり、改行を自動的に含む通常のprint文を使うことができます。 2番目のprint文は改行を追加しません。

n = 0 
for i in range(100,201): 
    if (i%5 == 0 or i%6 == 0) and not (i%5 == 0 and i%6 == 0): 
     n += 1 
     if n%10 == 0: 
      print(i) 
     else:    
      print(str(i) + ", ", end="") 
+1

なぜ彼はこれについて行くべきですか?私はあなたの答えの妥当性に疑問を呈していません、むしろ、あなたがそれを説明することを強く勧めます。 –