输入格式:
输入首先给出 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()
提交结果: