2013-12-15 49 views
2

它是一个反转用户输入的字符串的循环,它将字符反向读取并放入句子中。问题是,例如,用户的输入是hello,代码的最后一行中的逗号(,)会使输出成为输出,但如果不存在逗号,输出将使每个字母排成一行。和连接(+)不起作用,它会给出错误。我该怎么做才能使输出成为olleh而不是o l l e h?在for循环中连接

phrase = raw_input("Enter a phrase to reverse: ") 
end = (len(phrase))-1 
for index in range (end,-1,-1): 
    print phrase[index], 
+7

你_have_使用的字符串 - 这个?因为,如果没有,你可以简单地做到这一点:'phrase [:: - 1]' – iCodez

+0

@iCodez每当我在一个问题中看到“for-loop”和“reverse a string”时,我总是认为这是一项家庭作业。 “while-loop”或“palindrome”也一样。 – SethMMorton

+0

@iCodez这可能是因为所有的CS教授都更了解C/C++,并且只将python作为一个“服务”类来教,所以他们从不费心学习惯用的python。他们可能只是教会他们教C++的方式。这也解释了为什么我们在python中使用setter/getter来看到如此多的问题。 – SethMMorton

回答

1

要连接一些东西,你必须有一个字符串连接t O操作。在这种情况下,您需要一个外部定义循环的变量,因此您可以从内多次访问它的循环,就像这样:

phrase = raw_input("Enter a phrase to reverse: ") 
end = (len(phrase))-1 
mystr = "" 
for index in range (end,-1,-1): 
    mystr += phrase[index] 
print mystr 

请注意,您也可以简单地逆转Python中的字符串这样做:

reversedstr = mystr[::-1] 

这是技术上的字符串切片,使用第三个操作符来反转字符串。

另一种可能性是

reversedstr = ''.join(reversed(mystr)) 

reversed返回你通过它的迭代器的反向迭代器,这意味着你要它重新变换使用''.join

+0

非常感谢 –

2

怎么样:

string = '' 
for i in range(end, -1, -1): 
    string += phrase[i] 

print string 

然而,如果没有for循环更简单,更清洁的方式是:

print phrase[::-1] # this prints the string in reverse 

而且也有:

#As dougal pointed out below this is a better join 
print ''.join(reversed(phrase)) 
#but this works too... 
print ''.join(phrase[i] for i in range(end, -1, -1)) # joins letters in phrase together from back to front 
+1

一个更好的方法来做与你的第三种方法等价的东西是'''.join(反转(短语))'。尽管如此,短语[:: - 1]仍然是最好的方式。 – Dougal