华南虎_丿 发表于 2022-8-15 21:36:53

所列代码有什么问题,怎么解决?

题目:翻转单词顺序。
       用户输入一个英文句子,请编程翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串是 "I love FishC.",则输出 "FishC. love I"。
注意1:用户输入的字符串可能会在前面或者后面包含任意数量的空格,但是反转后的结果将会去除这些空格(例如输入字符串是 "   I love FishC.   ",结果依然输出 "FishC. love I")。
注意2:用户输入的字符串中,单词之间可能不止一个空格,但是反转后的结果将统一使用一个空格作为单词之间的间隔(例如输入字符串是 "I   love      FishC.",结果依然输出 "FishC. love I")
问题代码:
m = input("请输入一个英文句子:")
n = m.strip().split(" ")
n.reverse()
a = []
for each in n:
    k = each.replace(" ", "0")
    i = 1
    for x in k:
      if x == "0":
            i = 0
    if i == 1:
      a.append(k)
b = " ".join(a)
print(b)
返回:FishC.   loveI

tommyyu 发表于 2022-8-15 21:36:54

我感觉你这个代码有点繁琐,可以这样写:m = input("请输入一个英文句子:")
n = m.strip().split(" ")
n = list(filter(lambda x:bool(x), n))
n = " ".join(list(reversed(n)))
print(n)
整合成一行就是:print(" ".join(list(reversed(list(filter(lambda x:bool(x), input("请输入一个英文句子:").strip().split(" ")))))))

tommyyu 发表于 2022-8-15 21:55:24

这个each里面是不会有空格的>>> m = input("请输入一个英文句子:")
['FishC.', '', '', '', '', '', 'love', '', '', 'I']
>>> n = m.strip().split(" ")
>>> n.reverse()
>>> print(n)
['FishC.', '', '', '', '', '', 'love', '', '', 'I']
所以只需要把列表里面的''给去掉就行了

华南虎_丿 发表于 2022-8-15 22:46:36

tommyyu 发表于 2022-8-15 21:55
这个each里面是不会有空格的
所以只需要把列表里面的''给去掉就行了

是我没认真学习,split()直接就可以去掉空格{:10_266:}

华南虎_丿 发表于 2022-8-15 23:00:34

tommyyu 发表于 2022-8-15 21:56
我感觉你这个代码有点繁琐,可以这样写:
整合成一行就是:

高级{:10_275:}
不过有几个词还没见过{:10_278:}
看了答案已经知道问题在哪了{:10_323:}
页: [1]
查看完整版本: 所列代码有什么问题,怎么解决?