水平打印多行文本
Posted
技术标签:
【中文标题】水平打印多行文本【英文标题】:Print multiline text horizontally 【发布时间】:2022-01-15 03:18:05 【问题描述】:在我的 python 程序中,我定义了一个字典。
并为它分配了用#符号组成的大块字母。
我需要像这样水平显示字母????
# ### ###
# # # # #
##### ### #
# # # # #
# # ### ###
我的代码应该接受输入并打印与输入对应的大字母 如果输入为 abc,则输出应如上。
代码????
dic =
dic['A'] = '''
#
# #
#####
# #
# #'''
dic['B'] = '''
###
# #
###
# #
### '''
dic['C'] = '''
###
#
#
#
###'''
word = input('Input : ').upper()
for i in word :
s = dic[i].split('\n')
print(s[0],end=' ')
print('')
for j in word :
print(s[1],end=' ')
print('')
for k in word :
print(s[2],end=' ')
print('')
for m in word :
print(s[3],end=' ')
print('')
for n in word :
print(s[4],end=' ')
【问题讨论】:
每个字母都已经有换行符,所以它永远不会水平打印。您需要一次一行地处理整个字符串。 【参考方案1】:将字符存储在这样的列表中:
chars =
chars['A'] = [' # ',
' # # ',
'#####',
'# #',
'# #']
chars['B'] = ['### ',
'# #',
'### ',
'# #',
'### ']
chars['C'] = [' ###',
' # ',
'# ',
' # ',
' ###']
word = input('Input : ').upper()
word_chars = [chars[i] for i in word]
然后使用这个函数将word_chars
中的字符组合起来:
def combineChars(chars: list[list[str]], spacing: str):
lines = []
for line_i in range(max([len(x) for x in chars])):
line = []
for char in chars:
if len(char) > line_i:
line.append(char[line_i])
lines.append(spacing.join(line))
return '\n'.join(lines)
print(combineChars(word_chars, ' ')) # in this case the chars
# are 2 spaces apart
#output:
# ### ###
# # # # #
##### ### #
# # # # #
# # ### ###
combineChars(chars, spacing)
中的第二个参数用于字符之间的间距。
还有一个简短但复杂的形式:
def combineChars(chars: list[list], spacing: str):
return '\n'.join([spacing.join([char[line_i] for char in chars if len(char) > line_i]) for line_i in range(max([len(x) for x in chars]))])
【讨论】:
def combineChars(chars: list[list[str]], spacing: str): TypeError: 'type' object is not subscriptable
将 combineChars(chars: list[list[str]], spacing: str):
更改为 combineChars(chars: str, spacing: str):
成功【参考方案2】:
将您的字母存储在 char 的二维数组中。 然后合并所有字母,你会得到一个二维数组。 然后逐行打印你的二维数组。
【讨论】:
以上是关于水平打印多行文本的主要内容,如果未能解决你的问题,请参考以下文章