2

Python ループを使用して ASCII グラフを作成しようとしています。目標は、ユーザーが入力 (数式) [x+1] などを入力し、グラフを印刷することです。グラフのドメインと範囲は -10 から +10 までです。

私はなんとかそれを機能させましたが、私のコードでは (x+1) である式 (-x+1) に対してのみでした。

問題は、ループが上から印刷を開始するためであることを知っているので、ループを負の方向に印刷するように変更する必要がありますが、グラフをネストされたループに結合して印刷する方法にこだわっています適切に出力し、関数出力の対応する場所を置き換えます。

「*」行を印刷してからその周りのグラフを印刷するようにする必要があるかもしれないと今考えていますが、それはもっと複雑だと思います。

必要に応じて、さらに情報を提供できます。

建設的な考えは大歓迎です。

これが私のコードです。あなたの考えを教えてください。

height=20
w=10
x=0
for a in range(0,11):
    ps= ((" " * w)+('|')+(" " * w))
    ps=list(ps)
    ps[x]="*"
    x=x+1
    pp="".join(ps)
    print(pp)



rs=(('-'*10)+('+')+('-'*10))
rs=list(rs)
rs[x]="*"
rr="".join(rs)
print(rr)

for a in range(0,10):
    ws = ((" " * w)+('|')+(" " * w))
    ws=list(ws)
    y=x+1
    ws[y]="*"
    x=x+1
    wp="".join(ws)
    print(wp)

これは以下の出力です。

*         |          
 *        |          
  *       |          
   *      |          
    *     |          
     *    |          
      *   |          
       *  |          
        * |          
         *|          
          *          
----------+*---------
          | *        
          |  *       
          |   *      
          |    *     
          |     *    
          |      *   
          |       *  
          |        * 
          |         *
4

1 に答える 1

0

問題を解決する別の方法を次に示します。

  1. 各要素が文字である 2 次元配列を作成します
  2. 背景グラフの線を事前に入力する
  3. 各 x 位置をループし、丸められた y 位置を計算します
  4. *2次元配列に位置を挿入します
  5. 最後に、2次元配列全体を一連の行として出力します

5 の場合、Python コードの便利なスニペットを次に示します。''.join(myArray)

この解法は、データの結果がどうあるべきかの計算を実際の出力から切り離していることに気付くでしょう。これは、単純なプログラムでロジックを分離するための良い方法です。

  1. プログラムの入力データを処理、フィルター、サナタイズ、整理
  2. 入力に対してデータ処理を行う
  3. 処理されたデータを定式化し、フォーマットし、出力する

これらの 3 つの一般的な「メタ」ステップによってプログラムを整理すると、コードをさらに整理して理解しやすくすることができます。

于 2013-03-20T14:07:52.890 に答える