我正在尝试用Python制作图形设计,更具体地说是ASCII" banner"话。每个字母由字符的嵌套列表组成。
[[' _______ ', '( )', '| () () |', '| || || |', '| |(_)| |', '| | | |', '| ) ( |', '|/ \\|'], [' _______ ', '( ____ \\', '| ( \\/', '| (__ ', '| __) ', '| ( ', '| (____/\\', '(_______/']]
等
当为每个嵌套列表向下打印并为整个事物打印时,它们会形成一个单词。 我正如上面所说的那样打印它时遇到问题,对于每个嵌套列表都是如此。 提前谢谢!
答案 0 :(得分:9)
如果您要从左到右打印字母,则必须zip
列出自己的列表,实际上"transposing"。这样,第一个列表将包含所有第一行,第二个列表包含所有第二行,依此类推。现在只需join
那些就完成了。
>>> ascii = [[' _______ ', '( )', '| () () |', '| || || |', '| |(_)| |', '| | | |', '| ) ( |', '|/ \\|'], [' _______ ', '( ____ \\', '| ( \\/', '| (__ ', '| __) ', '| ( ', '| (____/\\', '(_______/']]
>>> print '\n'.join((' '.join(line) for line in zip(*ascii)))
_______ _______
( ) ( ____ \
| () () | | ( \/
| || || | | (__
| |(_)| | | __)
| | | | | (
| ) ( | | (____/\
|/ \| (_______/
如果您想从上到下打印字母,可以使用:
>>> print '\n\n'.join(('\n'.join(line) for line in ascii))
答案 1 :(得分:2)
虽然目前还不清楚您想要的输出,但我相信您可以使用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)
提供输出:
_______ _______ _______ _______
( ) ( ____ \ ( ) ( ____ \
| () () | | ( \/ | () () | | ( \/
| || || | | (__ | || || | | (__
| |(_)| | | __) | |(_)| | | __)
| | | | | ( | | | | | (
| ) ( | | (____/\ | ) ( | | (____/\
|/ \| (_______/ |/ \| (_______/