【Python】打印图案 .center(width)

一、题目

Mr. Vincent works in a door mat manufacturing company. One day, he designed a new door mat with the following specifications:

  • Mat size must be N*M. (N is an odd natural number, and M is 3 times N.)
  • The design should have 'WELCOME' written in the center.
  • The design patterm should only use | . and - characters.

Sample Designs

# Size: 7 x 21 

    ---------.|.---------
    ------.|..|..|.------
    ---.|..|..|..|..|.---
    -------WELCOME-------
    ---.|..|..|..|..|.---
    ------.|..|..|.------
    ---------.|.---------

 #    Size: 11 x 33

    ---------------.|.---------------
    ------------.|..|..|.------------
    ---------.|..|..|..|..|.---------
    ------.|..|..|..|..|..|..|.------
    ---.|..|..|..|..|..|..|..|..|.---
    -------------WELCOME-------------
    ---.|..|..|..|..|..|..|..|..|.---
    ------.|..|..|..|..|..|..|.------
    ---------.|..|..|..|..|.---------
    ------------.|..|..|.------------
    ---------------.|.---------------

Sample Input

9  27

Sample Output

------------.|.------------
---------.|..|..|.---------
------.|..|..|..|..|.------
---.|..|..|..|..|..|..|.---
----------WELCOME----------
---.|..|..|..|..|..|..|.---
------.|..|..|..|..|.------
---------.|..|..|.---------
------------.|.------------

二、代码

#!/usr/bin/env python
# coding: utf-8

N, M = map(int, input().split())
# N, M = 9, 27
str1 = '-'
str2 = '.|.'
str3 = 'WELCOME'
for i in range(N // 2):
    # print((str1 * ((M + 3) // 2 - (3 * (i + 1)))) + (str2 * (i * 2 + 1)) + (str1 * ((M + 3) // 2 - (3 * (i + 1)))))
    print((str2 * (i * 2 + 1)).center(M, str1))

print(str3.center(M, str1))

for i in range(N // 2):
    a = (i + 1) * 2
    #b = (M + 3) // 2
    # print(str1 * (b - ((N - a + 1) // 2 * 3)) + str2 * (N - a) + str1 * (b - ((N - a + 1) // 2 * 3)))
    print((str2 * (N - a)).center(M, str1))

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值