我是编程的初学者。 我正在创建返回垂直对齐文本的代码,该文本排除非字母数字。它也应该按空格改变线条,如
H W
e o
l r
l l
o d
我的代码在这里。 我可以垂直显示文字。 但是这个功能不会返回。 那我怎么编辑这个来垂直返回文本? 如果你能解释一下细节,我们将不胜感激。
from itertools import zip_longest
def transposition(string):
new_text = str()
for i in string:
x = i.isalpha()
if x == False:
i = ' '
new_text += i
for y in zip_longest(*new_text.split(), fillvalue=' '):
print (' '.join(y))
transposition("Hello, World")
答案 0 :(得分:1)
如果我理解你的问题,你需要一个带有"hello world"
等字符串的函数,并返回一个字符串,如"h w\ne o\nl r\n"
等。
如果是这样,我认为你基本上就在那里:
from itertools import zip_longest
import re
def transposition(string):
clean_str = re.sub('[^\w]', ' ', string)
return '\n'.join(
' '.join(row)
for row in zip_longest(*clean_str.split(), fillvalue=' '))
print(transposition("Hello, World... how are you?"))
>> H W h a y
>> e o o r o
>> l r w e u
>> l l
>> o d
注意:
True
或False
进行比较,只需if x:
或if not x:
。' '.join(row) for row in ...
是generator expression,您可以将其传递给任何需要迭代的函数。答案 1 :(得分:0)
这是你想要的吗?
def transposition(string):
new_text = str()
for i in string:
x = i.isalpha()
if x == False:
i = ' '
new_text += i
for y in new_text:
print ('\n'.join(y))
transposition("Hello, World")