要求
(图片来自codingame)
代码
# 定义一个函数,用于生成模式
def generate_pattern(n, a, border_char): # 初始化一个空列表,用于存储生成地图pattern = []# 最上面那一行的处理line = n * border_charpattern.append(line)# 遍历n次for i in range(n):# 如果i小于等于n的一半,上半区域if i <= n // 2:# 计算内部的个数,即2*i+1num_fill = 2 * i + 1# 否则else:# 计算内部字符的个数,即2*(n-i-1)+1num_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_charpattern.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)