我是python和编程的新手,并且接受了这个练习。我能够通过下面的代码获得预期的结果,但是想知道还有什么方法可以使用Python 3.x来解决这个问题。
练习是取一个数字并生成以下模式:
用户输入:1
X
用户输入:2
O O O
O X O
O O O
用户输入:3
X X X X X
X O O O X
X O X O X
X O O O X
X X X X X
依旧......
这就是我所拥有的:
def makePattern():
num = int(input("Enter a number: "))
def makeBoxes(num):
width = (num * 2) - 1
midpoint = num - 1
matrix = [ [ "X" for i in range(width) ] for j in range(width) ]
for d1 in range(width):
mpD1 = abs(midpoint - d1)
for d2 in range(width):
mpD2 = abs(midpoint - d2)
if (mpD1 % 2 == 1):
if mpD2 <= mpD1:
matrix[d1][d2] = "O"
if (mpD2 % 2 == 1):
if mpD1 <= mpD2:
matrix[d1][d2] = "O"
printBoxes(matrix,width)
makePattern()
def printBoxes(matrix,width):
holder = ""
count = 1
for row in matrix:
for point in row:
holder += (point + " ")
if count % width == 0:
print(holder)
holder = ""
count += 1
makeBoxes(num)
makePattern()
答案 0 :(得分:0)
您似乎正在尝试打印具有特定模式的电路板。没有进一步的描述,很难说更多。
关于你使用python的一些具体评论:
" ".join(row)
的作用。知道,在python 3中,printBoxes应该是一个简单的单行列表理解。关于您的算法的一些具体评论:
如果你把它们放在一起这可能会生成列表应该是一行python并打印它应该是另一行。具有讽刺意味的是,这也应该增加代码的可读性。