首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由信件制成的信件

由信件制成的信件
EN

Stack Overflow用户
提问于 2017-05-10 13:07:15
回答 3查看 172关注 0票数 2

我是python的新手(3.4版)。我想知道我怎么能做一个类似于这个的代码:

代码语言:javascript
复制
#block letters 
B1 = ("BBBB  ")
B2 = ("B   B ")
B3 = ("B   B ")
B4 = ("BBBB  ")
B5 = ("B   B ")
B6 = ("B   B ")
B7 = ("BBBB  ")
B = [B1, B2, B3, B4, B5, B6, B7]

E1 = ("EEEEE ")
E2 = ("E     ")
E3 = ("E     ")
E4 = ("EEEEE ")
E5 = ("E     ")
E6 = ("E     ")
E7 = ("EEEEE ")
E = [E1, E2, E3, E4, E5, E6, E7]

N1 = ("N    N")
N2 = ("NN   N")
N3 = ("N N  N")
N4 = ("N N  N")
N5 = ("N  N N")
N6 = ("N   NN")
N7 = ("N    N")
N = [N1, N2, N3, N4, N5, N6, N7]
for i in range(7):
    print(B[i], E[i], N[i])

我当前代码的输出如下所示:

代码语言:javascript
复制
BBBB   EEEEE  N    N
B   B  E      NN   N
B   B  E      N N  N
BBBB   EEEEE  N N  N
B   B  E      N  N N
B   B  E      N   NN
BBBB   EEEEE  N    N

但我想知道如何做一个可以接受用户的输入,并打印在上面的风格。我已经尝试了几个小时了,但找不出一个解决方案,看看其他人怎么做就太好了。我认为当屏幕上不适合其他字母时,这会变得更加困难,所以我只想打印10个字母。谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-05-10 13:13:54

首先你必须像以前一样手工制作字母表

代码语言:javascript
复制
N1 = ("N    N")
N2 = ("NN   N")
N3 = ("N N  N")
N4 = ("N N  N")
N5 = ("N  N N")
N6 = ("N   NN")
N7 = ("N    N")
N = [N1, N2, N3, N4, N5, N6, N7]

每封信都要这样做。阿-兹

代码语言:javascript
复制
# Now to let user input print your alphabet we will use a dictionary
# The the key is the letter and value is the printable  array
d = {'a':A,'b':B, ... , 'z':Z }

# Let's ask for user input:
line = input('What do you want to print> ')

# Now lets print what the user said in our alphabet
# iterate through the input and print it

sentence = map(d.get,line)
for letter in zip(*sentence):
    print(*letter)
票数 2
EN

Stack Overflow用户

发布于 2017-05-10 13:20:17

在不变得非常复杂的情况下,您需要硬核(即静态定义)每个字母为字符串列表,类似于您如何使用B、E和N。

然后构建一个字典,将每个字母映射到相应的列表:

代码语言:javascript
复制
>>> letters = {
...     'b': ["BBBB  ", "B   B ", "B   B ", "BBBB  ", "B   B ", "B   B ", "BBBB  "],
...     'e': ["EEEEE ", "E     ", "E     ", "EEEEE ", "E     ", "E     ", "EEEEE "],
...     'n': ["N    N", "NN   N", "N N  N", "N N  N", "N  N N", "N   NN", "N    N"]
... }

此示例只包含字母b、e和n的定义,您需要自己添加所有其他字母的定义。确保所有列表都有相同的长度。完成之后,您可以使用本词典显示从用户输入中获得的任何字母序列。演示:

代码语言:javascript
复制
>>> name = raw_input('enter your name: ')
enter your name: Ben
>>>
>>> for row in zip(*[letters[x.lower()] for x in name]):
...     print ''.join(row)
... 
BBBB  EEEEE N    N
B   B E     NN   N
B   B E     N N  N
BBBB  EEEEE N N  N
B   B E     N  N N
B   B E     N   NN
BBBB  EEEEE N    N
票数 2
EN

Stack Overflow用户

发布于 2017-05-11 01:25:48

我找到了一个不那么复杂的答案。我不知道如何使用zip或map,但是如果没有them.And,我可以理解代码所做的事情。

代码语言:javascript
复制
A =["   A    ", #CREATING LIST OF LETTERS
    "  A A   ",
    " A   A  ",
    "AAAAAAA ",
    "A     A ",
    "A     A ",
    "A     A "]

以这种方式创建字母表:

代码语言:javascript
复制
#PUTTING LETTERS IN LIST
Alphabet = {"A":A,"B": B, "C": C, "D":D, "E":E ,"F":F, "N": N} 
#ASKER USER FOR INPUT
text = input('Enter text(Only takes A, B, C, D, E, F, N)? ')
#INPUT IN UPPERCASE
text = text.upper()
for i in range(7):
    for letter in text:
        temp = Alphabet[letter]
        print(temp[i],end="")
    print('')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43893431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档