-1

Python 3.2 プログラムが by n パターンを出力できるように、ユーザーに値 n >= 3 を入力するように求める必要があります。

例、n=4 ==> パターン:

x..x
.xx.
.xx.
x..x

別の例、n=5 ==> パターン:

x...x
.x.x.
..x..
.x.x.
x...x

行ごとに x が互いに近づくことに注意してください。真ん中の列の後、お互いに距離を置き、最終的にそれぞれの端に到達します。

この問題で私を助けてください。分岐とループを使用する必要があることはわかっていますが、パターンの背後にあるロジックを理解できません。

n によるパターンを印刷することができましたが、次のようになります:
例 n=4 ==> パターン:

xx..  
xx..
xx..
xx..

私のコードは次のようになります。

    pattern_size = int(input("Please enter pattern size:"))
    while pattern_size < 3:
    print("Pattern size should be at least 3")
    pattern_size = int(input("Please enter pattern size:"))

    for level in range(1,pattern_size+1):
        for num in range(2):
            print("x", end="")

        num_dot = pattern_size - 2
        for num in range(num_dot):
            print(".", end="")

        print()

誰かが「。」を印刷する方法について私にアドバイスできますか。と「×」を交互に?

4

1 に答える 1

0

これは、python2.7 で動作するコードです。ここでのトリックは、「x」の 1 つが常に左にシフトし、もう 1 つが常に右にシフトすることです。

def pattern_writer(pattern_size):
    first_x = 0
    last_x = pattern_size - 1
    while first_x < pattern_size and last_x > -1:
        for t in range(pattern_size):
            if t == first_x or t == last_x:
                print "x",
            else:
                print ".",
        print "\n"
        first_x += 1
        last_x -= 1

リストを使用した別のソリューションを次に示します。

def pattern_writer2(pattern_size):
    for t in range(pattern_size):
        pattern = list("." * pattern_size)
        pattern[t] = "x"
        pattern[-(t+1)] = "x"
        print "".join(pattern)
于 2012-09-15T09:13:13.163 に答える