首页 > 解决方案 > 在python中的给定字符串中反转单词

问题描述

我已经在 python 中编写了代码,如果我将整数作为输入,它可以正常工作,但在给出字符串时它不会。

例子 -

输入:

2
i.like.this.program.very.much
pqr.mno

预期输出:

much.very.program.this.like.i
mno.pqr

但是我得到的输出与输入相同。字符串没有反转。我写的代码是 -

t=int(input())
for i in range(t):
    string1=input()
    li1=string1.split()
    li2=li1[::-1]
    output=' '.join(li2)
    print(output)

运行上述输入后,我得到 -

输出:

i.like.this.program.very.much
pqr.mno

标签: pythonstringdata-structuresreverse

解决方案


错误输出的原因

您的程序无法正常工作的原因是因为您试图在空格split()字符处拆分字符串,这是未指定参数时的默认值。但是您确实希望将字符串拆分为'.'字符。

所以当你尝试时string1.split(),你得到的清单是-

['i.like.this.program.very.much']

而我们真正想要得到正确输出的是——

['i', 'like', 'this', 'program', 'very', 'much']

我们正确使用string1.split('.'),即在.字符处拆分字符串,然后反转字符串。请注意,在加入字符串时,我们也必须使用.


所以你应该修改你的代码如下。

正确的代码 -

t=int(input())
for i in range(t):
    string1=input()
    li1=string1.split('.') #<-- Notice the parameter specified here. It will now split at `.` character
    li2=li1[::-1]          # Reverse the list
    output='.'.join(li2)   # Convert back into string. Again notice, we are joining at . character to get expected output
    print(output)

输入 :

2
i.like.this.program.very.much
pqr.mno

输出 :

much.very.program.this.like.i
mno.pqr

希望这可以帮助 !


推荐阅读