0

塗りつぶされた正方形を描画するコードがあります。

for i in range(0,n):
    print(n*"*")

どちらが出力されますか (明らかに n の値に依存します):

****
****
****
****

そして塗りつぶされた三角形:

for i in range(1,n+1):
    print((n-(n-i)) * "*")

どちらが印刷されますか(nにも依存します):

*
**
***
****

しかし、これらを次のような正方形を描くように適応させる方法がわかりません。

****
*  *
*  *
****

または、次のような三角形:

*
**
* *
*  *
*   *
*    *
*     *
********

欠落しているアスタリスクがそれぞれ空白文字 (つまり、スペース) に置き換えられるように、メイン コンテキストは無関係です。ユーザーの入力に応じて、これら 4 つのものを描画できる必要があります。

4

3 に答える 3

1

三角形の場合:

In [26]: def hollow_tri(n):
   ....:     print "*"
   ....:     for i in xrange(2,n):
   ....:         print "*{0}*".format(" "*(i-2))
   ....:     print "*"*n
   ....:     

In [27]: hollow_tri(8)
*
**
* *
*  *
*   *
*    *
*     *
********

In [28]: hollow_tri(4)
*
**
* *
****

正方形の場合:

In [29]: def hollow_square(n):
    print "*"*n
    for i in xrange(2,n):
        print "*{0}*".format(" "*(n-2))
    print "*"*n
   ....:     



In [30]: hollow_square(4)
****
*  *
*  *
****




In [31]: hollow_square(8)
********
*      *
*      *
*      *
*      *
*      *
*      *
********
于 2013-04-16T20:29:52.430 に答える