题目:字符画生成--Designer Door Mat

题目要求:
输入格式
单行包含空格分隔的值n和m
其中m为n*3
生成例图中的字符画
解题代码:
方法1:普通逻辑进行顺序生成
n, m = map(int, input().split())
s = '.|.'
c = '-'
w = 'WELCOME'
middle_n = (n + 1) // 2
for i in range(1, n + 1):
if i < middle_n:
# 计算两侧填充字符的数量
padding = (m - (i * 2 - 1) * len(s)) // 2
print(c * padding + (s * (i * 2 - 1)) + c * padding)
elif i == middle_n:
padding = (m - len(w)) // 2
print(c * padding + w + c * padding)
else:
# 对称位置的索引
sym_i = n - i + 1
padding = (m - (sym_i * 2 - 1) * len(s)) // 2
print(c * padding + (s * ((sym_i * 2 - 1))) + c * padding)
方法2,:切片转置生成
n, m = map(int, input().split())
s = '.|.'
w = 'WELCOME'
middle = (n + 1) // 2
# 上半部分
upper = []
for i in range(1, middle):
pattern = s * (2 * i - 1)
upper.append(pattern.center(m, '-'))
# 中间部分
middle_line = w.center(m, '-')
# 下半部分,即为上半部分的转置
lower = upper[::-1]
# 拼接打印
print('\n'.join(upper + [middle_line] + lower))
官方解答:考察str.center(width[, fillchar])
N,M = map(int,input().split())
for i in range(1, N, 2):
print(str('.|.'*i).center(M, '-'))
print(str('WELCOME').center(M, '-'))
for i in range(N-2, -1, -2):
print(str('.|.'*i).center(M, '-'))
文章评论