2016-05-02 8 views
0

私はこのことについて尋ねたいと思っています 私はスクリプトを持っており、このようなダイヤモンドの形をしています。ダイヤモンドの形のアスタリスク記号を削除する

Value : 5 
      * 
     * * * 
     * * * * * 
    * * * * * * * 
    * * * * * * * * * 
    * * * * * * * 
     * * * * * 
     * * * 
      * 

スクリプトコードは、私がお聞きしたいものをこの

masuk = int(input("Value : ")) 

for jarak in range(1, masuk): 
    for jarak6 in range(-1, masuk - jarak): 
     print (" ", end=" ") 
    for jarak7 in range(1, jarak): 
     print ("*", end=" ") 
    for jarak8 in range(jarak, 0, -1): 
     print ("*", end=" ") 

    print() 

for jarak in range(1, masuk *2 , + 1): 
    for jarak2 in range(jarak): 
     print (" ", end=" ") 
    for jarak3 in range(jarak, masuk + 1): 
     print ("*", end=" ") 
    for jarak4 in range(jarak + 1, masuk + 1): 
     print ("*", end=" ") 

    print() 

のようです:

  1. が、それはダイヤモンドの形状を作成するための効果的な方法ですか?
  2. ダイヤモンド形状の途中でアスタリスクシンボルを削除するにはどうすればよいですか?

答えて

1

内部ループは単純な文字列の乗算で置き換えることができます。代わりに

for i in range(a, b): 
    print(" ", end=" ") 

を書くのあなたはちょうどあなたが1つの印刷呼び出しに両方のあなたの外側のループの3つのすべての内部ループを組み合わせることができ、これにより

print(" " * (b - a)) 

を書くことができます:

print(" " * num_spaces + "*"*num_asterisks) 

私は」あなたの中にダイヤモンドを取り除くことによってあなたが何を意味するのか分かりません。

+0

最初と最後の位置を除いて、アスタリスクの代わりにスペースが当てられます。 – tripleee

+0

私はちょうど菱形の中に任意の文字で塗りつぶされていないダイヤモンドの形がほしいと思うことを意味します。それはちょうど中空ダイヤモンドのようなものです。 – SufferProgrammer

+0

その場合、 'if'節が必要です:最初の行と最後の行を除く各行は(スペースの数)+(アスタリスク)+(別のスペースの数)+(別のアスタリスク)これはちょうど(スペースの数)+(アスタリスク)になります。上半分の場合、スペースの最初の数は(総行数) - (現在の行数)と通常等しいでしょう。スペースの2番目の数(内部の空きスペース)は、2 *(現在の行番号)-1スペースになります。 – acdr

関連する問題