-1

我必须提示用户输入一个值 n >= 3,以便我的 python 3.2 程序可以打印一个 n 模式。

例如,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()

有人可以建议我如何打印“。” 和“x”交替出现?

4

1 回答 1

0

这是适用于 python2.7 的代码。这里的技巧是一个“x”总是向左移动,而另一个总是向右移动。

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 回答