要求
(图片来自codingame)
代码
# 定义一个函数,用于生成模式
def generate_pattern(n, a, border_char):
# 初始化一个空列表,用于存储生成地图
pattern = []
# 最上面那一行的处理
line = n * border_char
pattern.append(line)
# 遍历n次
for i in range(n):
# 如果i小于等于n的一半,上半区域
if i <= n // 2:
# 计算内部的个数,即2*i+1
num_fill = 2 * i + 1
# 否则
else:
# 计算内部字符的个数,即2*(n-i-1)+1
num_fill = 2 * (n - i - 1) + 1
# 生成一行模式,使用border_char填充,并在两侧使用a填充
line = (
border_char * ((n - num_fill) // 2)
+ a * num_fill
+ border_char * ((n - num_fill) // 2)
)
# 将生成的行模式添加到模式列表中
pattern.append(line)
# 最后一行的处理
line = n * border_char
pattern.append(line)
# 返回生成的模式列表
return pattern
# 定义一个函数,用于打印模式
def print_pattern(pattern):
# 遍历模式列表
for line in pattern:
# 打印每一行模式
print(line)
n1 = 9
a1 = "O"
border_char1 = "-"
n2 = 19
a2 = "#"
border_char2 = "."
# 生成并打印地图
pattern1 = generate_pattern(n1, a1, border_char1)
print_pattern(pattern1)
print()
pattern2 = generate_pattern(n2, a2, border_char2)
print_pattern(pattern2)