如何使用Python使用for循环来反转字符串中的单词?

时间:2019-07-27 11:29:49

标签: python

如何使用for循环在python中反转字符串中的单词? 从“ HELLO WORLD”到“ WORLD HELLO”

str =“ HELLO WORLD”

7 个答案:

答案 0 :(得分:1)

我要提出一个全面的答案:

这就是您想要的,只是裸露的python构造:

input = 'Hello'
word = ' '
output = ''
for c in input:
    if c == ' ':
        output = word + output
        word = ' '
    else:
        word += c
output = word[1:] + output

它只是遍历所有字母并保留它们,直到建立一个单词为止。当前字符c是空格时,它将当前word附加到output字符串中。在for循环之后,需要在output前加上最后一个字。由于您提供的字符串末尾没有空格,因此必须手动完成。 word[1:]只会删除最后一个word中的多余空间。

但是,由于使用了许多字符串创建和连接,因此上述解决方案并没有真正有效。 如果您想创建一个紧凑的 pythonic 解决方案,请使用以下解决方案:

input = "Hello world"
output = ' '.join(reversed(input.split()))
  1. input.split()将输入变成列表['Hello', 'world']

  2. reversed(...)将列表变成['world', 'Hello']

  3. ' '.join(...)将列表['world', 'Hello']中的每个字符串与每对单词之间的空格连接在一起,因此结果为'world Hello'

又快又脏,不是吗?

* bare-OP声称的,不使用任何内部函数

答案 1 :(得分:0)

' '.join(str.split(" ")[-1::-1]) 

输出:

WORLD HELLO

具有for循环

outputLst =[]

words = str.split(" ")
for word in words:   
    outputLst.insert(0, word)
' '.join(outputLst)

输出:

`WORLD HELLO`

答案 2 :(得分:0)

您不需要for循环:只需使用空格字符的位置即可,如下面的伪代码所示:

int i_space = location(" ", "HELLO WORLD"")
result = substring("HELLO WORLD", 1, i_space - 1) + " " + substring("HELLO WORLD", i_space + 1, Length("HELLO WORLD"))

for循环对于处理更复杂的情况更有用,例如:

HELLO THIS IS A BEAUTIFUL WORLD => transfer into:
WORLD BEAUTIFUL A IS THIS HELLO

或者:

HELLO WORLD => transfer into:
DLROW OLLEH

这能回答您的问题吗?

答案 3 :(得分:0)

str="HELLO WORLD"
rev=""
for i in range(len(str.split(" "))):
    rev=str.split(" ")[i]+" "+rev

输出:WORLD HELLO

不使用内置函数的另一种解决方案:

def split(str):
    list_str=[]
    j=0;
    for i in range(len(str)):
        if str[i]==' ':
            list_str.append(str[j:i])
            j=i+1;
    list_str.append(str[j:i+1])
    return list_str


str="HELLO WORLD"
rev=""
list_str=split(str)
for i in range(len(list_str)):
    rev=list_str[i]+" "+rev
print(rev)

输出:WORLD HELLO

答案 4 :(得分:0)

温和的解决方案:

首先,是一个幼稚的人

text = 'hello world'

words = text.split()
line = []
for i in range(len(words), 0, -1):
    line.append(words[i - 1])
print(' '.join(line))

接下来,我们使用reversed迭代器:

words = text.split()
line = []
for i in reversed(range(len(words))):
    line.append(words[i])
print(' '.join(line))

接下来,我们使用列表迭代器:

words = text.split()
line = []
for word in reversed(words):
    line.append(word)
print(' '.join(line))

最后,我们使用隐式循环进行所有操作:

print(' '.join(reversed(text.split())))

答案 5 :(得分:0)

一个仅带有循环但没有任何功能的版本:

s = 'Hello  World, this string will be reversed!'

def reverse_words(s):
    rv = ''
    buf = ''
    for ch in s[::-1]:
        if ch != ' ':
            buf += ch
        else:
            if buf:
                rv += buf[::-1] + ' '
            buf = ''
    if buf:
        rv += buf[::-1]

    return rv

s = reverse_words(s)
print(s)

打印:

reversed! be will string this World, Hello

答案 6 :(得分:0)

我最近开始学习python,这是我尝试过的

name=input("Enter the word you want the reverse :")
a=(len(name))
print(a)
for i in range (1,a+1):

    print("{}".format(name[-i]),end="")