【问题标题】:reverse words in a given string in python在python中的给定字符串中反转单词
【发布时间】:2020-06-27 19:45:08
【问题描述】:

我已经在 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

【问题讨论】:

  • 无论您的解决方案是什么,在第一行中您通过调用int() 将输入转换为整数,因此预计这仅适用于整数。
  • 什么是pqr.mno和2?

标签: python string data-structures reverse


【解决方案1】:

输出错误的原因

您的程序无法正常运行的原因是您试图在 space 字符处拆分字符串,这是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

希望这会有所帮助!

【讨论】:

  • 同意!!这是最pythonic的方式
【解决方案2】:
s = input("Enter string here = ")
l1=s.split
l1.reverse()
print(l1)

【讨论】:

    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多