在python中打印模式

mpbci0fu  于 2022-12-15  发布在  Python
关注(0)|答案(4)|浏览(161)

我想使用python打印以下模式:

00X
0X0
X00

另外,我必须只使用循环来打印,而不使用数组。好吧,我已经写了一个初始代码,但不可伸缩。下面是初始代码:

for i in range (1):
  for j in range (1):
    print(0, 0, "X")
for i in range (1):
  for j in range (1):
    print(0, "X", 0)
for i in range (1):
  for j in range (1):
    print("X", 0, 0)

我正在寻找一个合适的替代方案。请随时在[我的GitHub上的源代码:https://github.com/micahondiwa/python/blob/main/0x00-python/31-pattern.py。
谢谢你。
我尝试使用for a循环。虽然我得到了输出,但结果是不可伸缩的。我期待找到一个解决方案,使用函数实现循环并打印模式。

tez616oj

tez616oj1#

嵌套循环将起作用。外循环从n-10,内循环从0n-1。当内外循环变量相等时,打印X

def f(n):
    for row in range(n-1, -1, -1):
        for col in range(n):
            if row == col:
                print('X', end='')
            else:
                print('0', end='')
        print()

运行示例:

>>> f(5)
0000X
000X0
00X00
0X000
X0000
a7qyws3x

a7qyws3x2#

您可以在单个循环中执行此操作:

SQUARE_SIZE = 8

for i in range(SQUARE_SIZE):
    print("0"*(SQUARE_SIZE-i-1) + "X" + "0"*i)

输出:

0000000X
000000X0
00000X00
0000X000
000X0000
00X00000
0X000000
X0000000
jyztefdp

jyztefdp3#

这里n是 * 行数 * 和 * 列数 *。

for i in range(n):
    for j in range(n):
        if(j == n - 1 - i):
            print("X", end="")
        else:    
            print("0", end="")
    print()

输出:

n = 3
>>> 00X
>>> 0X0
>>> X00
gzszwxb4

gzszwxb44#

根据我的理解,你需要写一个矩阵,其中次对角线上有X,其他地方都是0,你不能使用数组(你不需要数组)。
如果我是正确的,你基本上想这样做(如果我们说矩阵是10 x10):

  • 在第一行中要写入9个零和1个x
  • 在第二行中,您要写入8个零、1个x和1个零
  • 在第三行中,您要写入7个0、1x和2个0...

这显示了下一个模式

  • 在第一行(10-1)中为0和1 x
  • 在第二行(10-2)中,0、1 x和1 0
  • 在第三行(10-3)0、1 x和2 0...现在我们看到我们写入了(n-i-1)0、1 x和i 0

所以我们可以这样做:

n = 10
for i in range(n):
    print('0' * (n-i-1) + 'X' + '0' * i)

编辑:
因为@micahondiwa说它需要在函数中实现,所以下面是代码示例:

def my_func(n):
    for i in range(n):
        print('0' * (n-i-1) + 'X' + '0' * i)

相关问题