python 3

时间:2015-09-30 17:30:28

标签: python vertical-text

我试图编写一个代码,让一个短语垂直打印,然后需要将其打印出来。我让用户输入一个字符串,但我需要输出以空格查看某种方式。我已经编写了一些代码:

def main():

    #have user input phrase
    phrase = input("Enter a phrase:  ")
    print() # turnin
    print() #blank line
    print("Original phrase:",phrase)
    print() # blank line

    word_l = phrase.split()
    word_a = len(word_l)

    max_len = 6
    for i in range(word_a):
        length = len(word_l[i])
        if length < max_len:
             print(len(word_l[i]) * " ",end="")

我需要在下一部分中互相拥有2个循环,但我不相信上面的循环和if语句是正确的。所以说用户输入短语:Phil喜欢编码。我需要输出看起来像:

P    l     t  c
h    i     o  o
i    i        d
l    k        e
     e
     s

单词之间的空格是空格,好像字母在那里包括一个空格。我不能使用任何导入,我可以使用的唯一功能是拆分。我需要一个带有if语句的for循环,然后我需要另一个for循环,其中包含for循环。真的很感激任何帮助。

2 个答案:

答案 0 :(得分:5)

更简单的方法是使用zip_longest

中的itertools
import itertools

txt = "some random text"

l = txt.split(' ')

for i in itertools.zip_longest(*l, fillvalue=" "):
    if any(j != " " for j in i):
        print(" ".join(i))

上一段代码会给你

s r t
o a e
m n x
e d t
  o  
  m  

要在单词之间添加额外的空格,请在print(" ".join(i))

中添加空格

您可以将txt更改为当然输入

答案 1 :(得分:1)

这个怎么样?

phrase = "Phil likes to code"

words = phrase.split()

maxlen = max([len(w) for w in words])


#now, you dont need max len , you can do a while True
#and break if all the words[ix] hit an IndexError

print "012346789"
for ix in range(maxlen):
    line = ""
    for w in words:

        try:
            line += w[ix]
        except IndexError:
            line += " "
        line += " "
    print line

,输出为:

012346789
P l t c
h i o o
i k   d
l e   e
  s