PAT (Basic Level) Practice 1109 擅长C

输入格式:

输入首先给出 26 个英文大写字母 A-Z,每个字母用一个 7×5 的、由 C 和 . 组成的矩阵构成。最后在一行中给出一个句子,以回车结束。句子是由若干个单词(每个包含不超过 10 个连续的大写英文字母)组成的,单词间以任何非大写英文字母分隔。

题目保证至少给出一个单词。

输出格式:

对每个单词,将其每个字母用矩阵形式在一行中输出,字母间有一列空格分隔。单词的首尾不得有多余空格。

相邻的两个单词间必须有一空行分隔。输出的首尾不得有多余空行。

思路:首先,这道题的输入和输出的处理是比较复杂的,而且还需要对输入的句子进行处理。处理输入输出的时候找到处理规律,然后迭代进行处理就可以了。(下面这种输出样例就可以从一行来分析,进行数据的预处理)

 代码如下:

import sys
alpha_dict = {}
out_list = []
start = 'abcdefghijklmnopqrstuvwxyz' #这个字符串用来做所有输入字母矩阵的键
str_1 = ''
if_has_pt = False
def printLine(in_str,dict_in,num):  #这里调用一次将打印7行,即一个矩阵块
    out_line = []
    for i in range(0,7):
        for j in in_str:
            try:
                out_line.append(dict_in[j][i])
            except:
                continue
        if num==1 and i==6:
            print(" ".join(out_line),end="")
        else:
            print(" ".join(out_line))
        out_line = []
for x in range(0,26):         #这里每次循环将存入一个字母矩阵块(一次循环读入7行)
    alpha_dict[start[x]] = [sys.stdin.readline().replace('\n','') for x in range(7)]
in_2 = sys.stdin.readline().replace('\n','')
for y in range(0,len(in_2)):   #这里对输入的最后一行英文语句进行处理
    if in_2[y].isupper():
        str_1 = str_1 + in_2[y]
        if_has_pt = False
    if ((in_2[y].isupper()==False and if_has_pt==False 
         and str_1!='') or (y+1==len(in_2) and str_1!='')):
        str_1 = str_1.lower()
        out_list.append(str_1)
        str_1 = ''
        if_has_pt = True
for z in range(0,len(out_list)):   #这里将调用打印方法
    if z+1==len(out_list):
        printLine(out_list[z],alpha_dict,1)
    else:
        printLine(out_list[z],alpha_dict,0)
        print()

提交结果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值