希望する出力の間隔が明確ではありません。試行されたコードのように、各数字に4つのスペースが必要であると仮定します。 Python 3.6.1のコードでは、複数の範囲を使用し、リスト、辞書、補完、および結合を避けます。コードもそうです。これらの機能により、コードがより簡潔になる可能性があります。このコードでは、ブール値フラグ変数と3進演算子を使用する範囲を使用します。
rows = 4
cols = 6
increasing = True
for j in range(rows * cols, 0, -cols):
increasing = not increasing
for k in range(j-cols+1, j+1) if increasing else range(j, j-cols, -1):
print('{0:4d}'.format(k), sep='', end='')
print()
私は結果を得る:ここで
24 23 22 21 20 19
13 14 15 16 17 18
12 11 10 9 8 7
1 2 3 4 5 6
は、その行が入っている場合は、直接決定する行の最大値を使用して、ブールフラグ変数を使用していないバージョンです。増減指数:
rows = 4
cols = 6
for j in range(rows * cols, 0, -cols):
for k in range(j-cols+1, j+1) if j // cols % 2 else range(j, j-cols, -1):
print('{0:4d}'.format(k), sep='', end='')
print()
このコードは2行短くても私の前のコードよりはっきりしていません。私の前のコードと同じ出力を与える4行6列の場合。このコードは常に昇順に最後行を印刷しながら、しかし、私の以前のコードは常に、順に最初行を印刷します。行の数が奇数で、問題の説明でわかりやすくなっていない場合にのみ違いが表示されます。この最後のコードは、最初のコードと常に一致するように変更することができますが、それはより複雑になります。
Boolean valueは、コンピュータにエンコードされた2つの値しかない真理値です。 Pythonでは、2つの値はTrue
とFalse
です。タイプは、最初に論理の代数を作ったGeorge Booleにちなんで命名されます。 A flag variableは、2つの可能な値の1つを保持する変数ですが、必ずしもブール値ではありません。これは、システムのある状態を表し、その状態をプログラムの一部に伝えます。これは、ボックスに送信メールが含まれ、送信メールが表示されないことを示すために提起された昔ながらのアメリカの郵便箱の「旗」のようなものです。多くの鉄道システムには同様のフラグがあり、2つの状態のみが表示され、表示されたり表示されたり表示されたりしませんでした。
私の最初のコードでは、increasing
はブールフラグ変数です。これは、「現在の行」の数字が印刷される方向を表します。True
は昇順を意味し、False
は降順を意味します。このフラグは、各行で反転され、目的の「スネークパターン」が得られます。行を調べる前にTrue
(昇順)に設定して開始するので、最初に印刷される行は降順で印刷されます。そのフラグの状態は、行の適切な範囲を選択するために使用されます。行の可能な2つの範囲は、同じ値ではあるが異なる順序です。
私の2番目のコードでは、行内の最大数であるj
の値を調べて、行の正しい順序を直接計算してフラグ変数を回避しました。これを列の数で割って、現在の行の行番号を返します。ここで、1
が最後の行です。行番号を2で割った後に余りを調べることによって、行番号が偶数か奇数かを確認します。すべては式j // cols % 2
で行われます。その値が奇数の場合、剰余は1で、Python considers any non-zero number to be "Truthy"であり、その式はTrue
と扱われます。行番号が偶数の場合、計算された剰余はゼロであり、したがって「偽」であり、False
として扱われます。だから私は、フラグ変数やブール値を全く使わずに論理的な結果を得る。私が言ったように、これは私の最初のコードよりも短く、理解するのが難しいです。
行=範囲のI 16 (行): K = i *が範囲内のjについて8 + 1 (K、K + 8): 印刷 '{0:4D}' 形式(J)。 、 print "" – Dhrumil
はい15が変更されました – Dhrumil
あなたのタグは 'python-3.x'ですが、printステートメントはpython-2.xでのみ適切です。あなたは本当に欲しいのですか?また、希望する出力の間隔が矛盾しています。あなたは何の間隔を空けていますか? –