2017-02-09 27 views
0

我希望能够打印一个字符串并将其格式化为一个形状。在这里的代码格式化为一个直角三角形,但我也想做其他形状。问题是我不能让字符串在每一行截断并继续,它只是在第一个字符处循环。如何将字符串格式化为形状?

这是什么样子

hhhhhhhhhhhhhhh 
hhhhhhhhhhhhh 
hhhhhhhhhhh 
hhhhhhhhh 
hhhhhhh 
hhhhh 
hhh 
h 

,但我希望它看起来像这样

hellowor 
ldhowar 
eyout 
oday 
? 

我一直在努力环绕这个概念我的头很多最近,我可以似乎没有正确地在函数内循环函数。我想我可能会错过关于索引或循环的一些关键部分,这会阻止我。但如果你能在这里展示我,我可能会更多地了解它。我试图用Google搜索这个问题无济于事。我感谢任何帮助。

这里是我的代码迄今:

text = ('hello world how are you today?') 

def word(): 
    for c in text: 
     return c 

def triangle(i, t = 0): 
    if i == 0: 
     return 0 
    else: 
     print '' * (t + 1) + word() * (i * 2 - 1) 
     return triangle (i - 1, t + 1) 
triangle (8) 

编辑:

我加入了这个其他的事情:

def triangle(i, t = 0): 
if i == 0: 
    return 0 
else: 
    for c in text: 
     print '' * (t + 1) + word() * (i * 2 - 1) 

    return triangle (i - 1, t + 1) 

,但它产生了同样的问题,在这里通过只打印来自“文本”的第一个字母。

如何循环每个字母?

+0

当你'return',它杀死函数并给你返回的值,所以你的''''函数只会返回'text'中的第一个'c',它是''h'' – ryugie

+0

我不清楚你想要的结果:你想要8,7,5,4行和剩余字符?为什么/如何跳过6?你无意义的变量名称和缺少结构注释使得这很难遵循。此外,您似乎已在某处清除了空白区域,但我没有看到您的代码正在执行此操作。 – Prune

+0

@Prune我手动输入了第二个,因为我无法让程序做到这一点哈哈。这就是为什么它跳过了6,人为错误。 我基本上要定义×长度的三角形(在这种情况下,其如图8所示,但它可以是任何),然后该三角形内打印一个字符串,使得每行是由三角形的宽度截断,因为它下降。那有意义吗? –

回答

0

谢谢。基本的答案是你让这个过于复杂。从第一行开始在字符串的前面;将余数传递给递归调用。不要费心从字符串中取出单个字符:只需抓住你需要的子集。

注意这基地情况:要么大小命中0,或者你之前用完的消息。

def triangle(message, size): 
    # Size = 0: we're done; ran out of rows 
    if size == 0: 
     return 
    # Not enough message left: print it all 
    if size >= len(message): 
     print message 
    # print "size" characters and go to next line 
    else: 
     print message[:size] 
     triangle(message[size:], size-1) 


text = "hello world how are you today?" 
triangle(text, 8) 
print "" 
triangle(text, 7) 

输出:

hello wo 
rld how 
are y 
ou to 
day? 

hello w 
orld h 
ow ar 
e yo 
u t 
od 
a 

STRING SLICES

的一般形式是

str[start : end : step] 

到此你从STR [开始]通过str中的子串[端-1],包括端点。如果省略任何参数,默认值是

start = 0 
end = -1 (through the end of the string) 
step = 1 

因为我们很少有通过一个字符串经常跳过,在一步说法几乎总是默认为1

+0

太棒了。感谢堆!我能问你:这些是什么人做的[:大小]和[大小:] ......你不必自己解释它,但如果你能告诉我名字的这个特别的东西pyhton我可以去看看它自己。再次感谢! –

+1

@elliotholder - 它只是切片,就像在列表(3.1.4节):https://docs.python.org/2/tutorial/introduction.html – ryugie

相关问题