我必须打印j个相邻的菱形 也就是说,如果i = 3且j = 2,则输出应类似于
* *
* * * *
* * * * * *
* * * *
* *
我已经用python编写了一个程序来解决这个问题,但是我将输出一个接一个地递了下来。任何人都可以帮忙吗?
i,j=map(int,input().split())
def solve(a,b):
for i in range(a,b):
print((" "*abs(b))+("* "*abs(i)))
b-=1
for k in range(0,j):
solve(0,i),solve(-i,0)
答案 0 :(得分:0)
我认为这对您有用。我试图使其与您自己的代码相似,以便您理解。
让我知道您是否需要任何修改
i,j=map(int,input().split())
size = i
def solve(a,b):
for i in range(a,b):
spaces =[]
stars = []
spaces = list(" " * abs(b))
stars = list("* " * abs(i))
final = spaces + stars
#padding
while len(final) < ((size*2)-1):
final.append(" ")
# popping last space to preserve pattern
if len(final) == (size * 2):
final.pop()
b-=1
print("".join(final) * j)
for k in range(0,1):
solve(0,i)
solve(-i,0)
输出:
5 5
* * * * *
* * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * ** * * * ** * * * ** * * * ** * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * *
* * * * *
答案 1 :(得分:0)
有时候,复制数据比重新创建数据更容易。此外,这可以在菱形之间提供适当的间距。
i, j = map(int, input().split())
# Create the top half
lines = [];
for lineIndex in range(i):
lines.append('')
lines[lineIndex] = ' ' * (i - lineIndex) + '*'
for idx in range(lineIndex):
lines[lineIndex] += ' *'
lines[lineIndex] += ' ' * (i - lineIndex)
# Copy the first lines onto the end in reverse order
for idx in range(i - 2, -1, -1):
lines.append(lines[idx])
# Create the correct number of rhombuses
for idx in range(len(lines)):
lines[idx] *= j
lines[idx] = lines[idx][:-1]
for line in lines:
print(line)
输出:
4 6
* * * * * *
* * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * *
如果您正在寻找更接近开始的解决方案,则以下内容也应适用。请注意,传递到end=''
语句中的print
参数将print
打印的结束字符从换行符更改为空,从而允许您将所有菱形都打印在一行上。
i,j=map(int,input().split())
def solve(a,b):
for k in range(a,b):
print(((' '*abs(b))+('* '*abs(k))+(' '*abs(b))) * j, end='')
b-=1
print()
solve(0,i)
solve(-i,0)