0

つまり、ユーザーの入力に応じて星を出力するプログラムを作成したいと思い、それを実行しました。

for i in range(num):
  print((i*-1)*' ' + (i+1)*'*')



for o in range(num-1):  
  print((num-o-1)*'*')

これの代わりを除いて:

 *
* *
 *

私はこれを得る:

*
**
*

スペースを実装するにはどうすればよいですか? 少し早いですがお礼を!

4

1 に答える 1

2

文字列に負の数を掛けると、空の文字列が得られます。そして、あなたの数式はそもそも正しくありません。(等幅端末で) 並べるために十分なスペースを前面に埋め込む必要があります。

正しく行う方法の 1 つを次に示します。

>>> def diamond(n):
...     print(' '*n + '*')
...     for i in list(range(1,n)) + list(range(n,0,-1)):
...             print('{}*{}*'.format(' '*(n-i), ' '*(2*i-1)))
...     print(' '*n + '*')

範囲をリストに変換することは、n が大きい場合には効率的ではありませんが、ボトルネックにはならず、端末は実質的に 80 文字までの幅しかサポートしません。

于 2013-08-17T03:07:45.717 に答える