我正在尝试一个问题,使图形设计在Python中,更具体地说ASCII"横幅"字。每个字母由嵌套的字符行列表组成。
[[' _______ ', '( )', '| () () |', '| || || |', '| |(_)| |', '| | | |', '| ) ( |', '|/ \|'], [' _______ ', '( ____ \', '| ( \/', '| (__ ', '| __) ', '| ( ', '| (____/\', '(_______/']]
等。
当打印每个嵌套列表和整个列表时,它们组成一个单词。正如我上面所说的,我在打印它时遇到了麻烦,每个嵌套列表和整个事情。提前感谢!
如果你想从左到右打印字母,你将不得不将列表的列表本身zip
,有效地"转置"它。这样,第一个列表将包含所有的第一行,第二个列表包含所有的第二行,以此类推。现在只要join
,你就完成了。
>>> ascii = [[' _______ ', '( )', '| () () |', '| || || |', '| |(_)| |', '| | | |', '| ) ( |', '|/ \|'], [' _______ ', '( ____ \', '| ( \/', '| (__ ', '| __) ', '| ( ', '| (____/\', '(_______/']]
>>> print 'n'.join((' '.join(line) for line in zip(*ascii)))
_______ _______
( ) ( ____
| () () | | ( /
| || || | | (__
| |(_)| | | __)
| | | | | (
| ) ( | | (____/
|/ | (_______/
如果你想从上到下打印字母,你可以这样:
>>> print 'nn'.join(('n'.join(line) for line in ascii))
虽然不完全清楚您想要的输出,但我相信您可以从使用string.join()
函数中受益。
编辑
啊哈,现在很清楚你要做什么了。使用@tobias_k的解决方案,我建议您可以这样做,以方便编辑您的信件:
m = """
_______
( )
| () () |
| || || |
| |(_)| |
| | | |
| ) ( |
|/ |
""".split('n')
e = """
_______
( ____
| ( /
| (__
| __)
| (
| (____/
(_______/
""".split('n')
lines = zip(m,e,m,e) # Spell the word you want here
print 'n'.join(' '.join(line) for line in lines)
给输出:
_______ _______ _______ _______
( ) ( ____ ( ) ( ____
| () () | | ( / | () () | | ( /
| || || | | (__ | || || | | (__
| |(_)| | | __) | |(_)| | | __)
| | | | | ( | | | | | (
| ) ( | | (____/ | ) ( | | (____/
|/ | (_______/ |/ | (_______/