如何使用for循环在python中反转字符串中的单词? 从“ HELLO WORLD”到“ WORLD HELLO”
str =“ HELLO WORLD”
答案 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()))
input.split()
将输入变成列表['Hello', 'world']
reversed(...)
将列表变成['world', 'Hello']
' '.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="")