To reverse sentence in python
本问题已经有最佳答案,请猛点这里访问。
谢谢你的回答。我知道为什么我的代码是错误的。
请不要为我提供解决方案,因为我确实有一些解决方案,但是我想了解我的代码不起作用。
我认为这是由于
1 2 3 4 5 6 7 8 9 10 11 12 13 | O_string = ("Me name is Mr_T") split_result = O_string.split() print(split_result) x=0 list=[] while x <= -len(split_result): list.append(split_result[x-1]) x = x-1 result="".join(list) print (result) |
您可以使用
1 | print(' '.join(O_string.split()[::-1])) |
输出:
1 | 'Mr_T is name Me' |
这里,
或者,您可以使用内置函数
1 2 | >>> ' '.join(reversed(O_string.split())) 'Mr_T is name Me' |
关于你的算法。在我看来,用负指数来思考总是比较困难的。我建议积极点:
1 2 3 4 5 6 7 8 9 10 11 | O_string = ("Me name is Mr_T") split_result = O_string.split() res = [] x = len(split_result) - 1 while x >= 0: res.append(split_result[x]) x = x-1 result="".join(res) print (result) |
输出:
1 | 'Mr_T is name Me' |
在这里:
1 | x = len(split_result) - 1 |
给出列表的最后一个索引。我们开始用
你倒计时:
1 | x = x-1 |
一旦你得到一个负指数就停止:
1 | while x >= 0: |
提示:不要使用
回答"我的代码有什么问题?",让我们看看外壳中发生了什么:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> O_string = ("Me name is Mr_T") split_result = O_string.split() print(split_result) ['Me', 'name', 'is', 'Mr_T'] >>> x=0 >>> len(split_result) 4 >>> -len(split_result) -4 >>> x 0 >>> 0 <= 4 True >>> 0 <= -4 False >>> x <= -len(split_result) False >>> while False: print('this will not get printed') |
所以,while循环条件永远不会是真的,循环也永远不会发生。下面是一个工作的例子:
1 2 3 | x = -1 while x >= -len(split_result): list.append(split_result[x]) |
在python中,
可以使用reverse函数和str.join
1 2 3 4 | O_string = ("Me name is Mr_T") split_result = O_string.split() split_result.reverse() print"".join(split_result) |
您可以使用reverse来颠倒句子:
1 2 3 4 | o_string ="Me name is Mr_T" words = sentence.split() o_string ="".join(reversed(words)) print(o_string) |
你可以试试:
1 2 3 4 5 | >>> O_string = ("Me name is Mr_T") >>> O_list = O_string.split() >>> O_list.reverse() >>>"".join(O_list) 'Mr_T is name Me' |