我正在尝试在python中创建一个程序,用户输入一个句子并打印出反向判刑。我到目前为止的代码是:
sentence = raw_input('Enter the sentence')
length = len(sentence)
for i in sentence[length:0:-1]:
a = i
print a,
当程序运行时,它会错过最后一个字母,所以如果单词是'hello',它将打印'olle'。任何人都可以看到我的错误吗?
答案 0 :(得分:3)
您需要从索引范围中删除0
,但您可以使用:
sentence[length::-1]
也不是那样你不需要循环你的字符串并使用额外的分配,甚至length
你只需打印反转的字符串即可。
所以下面的代码将为您完成这项工作:
print sentence[::-1]
演示:
>>> s="hello"
>>> print s[::-1]
'olleh'
答案 1 :(得分:1)
尝试此操作:使用MAP功能避免出现问题
mySentence = "Mary had a little lamb"
def reverseSentence(text):
# split the text
listOfWords = text.split()
#reverese words order inside sentence
listOfWords.reverse()
#reverse each word inside the list using map function(Better than doing loops...)
listOfWords = list(map(lambda x: x[::-1], listOfWords))
#return
return listOfWords
print(reverseSentence(mySentence))
答案 2 :(得分:0)
切片表示法的第二个参数意味着"最多但不包括"所以sentence[length:0:-1]
将循环到0,但不是0。
修复方法是明确地将0更改为-1,或将其保留(首选)。
for i in sentence[::-1]:
答案 3 :(得分:0)
print ''.join(reversed(raw_input('Enter the sentence')))
答案 4 :(得分:0)
你走了:
sentence = raw_input('Enter the sentence')
length = len(sentence)
sentence = sentence[::-1]
print(sentence)
享受!
一些解释,重要的一行sentence = sentence[::-1]
是使用Python的切片表示法。详细here。
语法的这种杠杆反转了可迭代字符串中项的索引。结果是你正在寻找的反向句子。