2

我正在尝试编写代码以垂直打印短语,并且需要将其打印一定距离。我让用户输入一个字符串,但我需要输出以某种方式显示空格。我已经写了一些代码:

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 like to code。我需要输出看起来像:

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

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

4

2 回答 2

6

一种更简单的方法是使用zip_longestfromitertools

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为输入

于 2015-09-30T17:39:43.847 回答
3

这个怎么样?

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
于 2015-09-30T18:48:20.100 回答