编写一个接受由空格分隔的单词串的函数 由字母字符组成并返回一个字符串 输入字符串中的每个单词与单词的顺序相反 在输入字符串中保留。资本化在这里很重要。该 输入字符串的长度必须等于输出的长度 字符串,即你的中应该没有尾随或前导空格 输出字符串。例如,如果:
input_string =“这是一个样本测试”
然后该函数应该返回一个字符串,如:
" siht si elpmas tset"
这是我的代码:
def preserve_and_reverse (input_str):
list = input_str.split()
print (list)
reverse_character = ""
for i in range (0, len(input_str)):
split_list = list[0:(i + 1)]
print (split_list)
for j in split_list_advance:
reverse_character = reverse_character + split_list[j]
output_str = output_str.append(reverse_character)
output = output_str.replace("", " ")
print (output)
#Main Program
input_str = input("Enter a string: ")
result = preserve_and_reverse (input_str)
print (result)
我无法获得任何代码。我是否应该尝试不同的方法,例如遍历每个字符,当我遇到白色空格时,只需将字符串切片然后执行反向操作? 任何帮助,将不胜感激。
答案 0 :(得分:6)
Split
,使用map
将[::-1]
的每个字符串反转,然后join
将其转回' '.join
>>> s = 'this is a sample test'
>>>
>>> ' '.join(map(lambda s:s[::-1], s.split()))
'siht si a elpmas tset'
答案 1 :(得分:2)
我就是这样做的:
def preserve_and_reverse(input_str):
# Split the String into an Array
list_ = input_str.split(" ")
return_str = ""
# For Each String in the Array
for item in list_:
# Add Reversed String to Return String
return_str += item[::-1] + " "
# Return String without leading/trailing spaces
return return_str.strip()
# Main Program
string_input = input("Enter a string: ")
result = preserve_and_reverse(string_input.strip())
print(result)
答案 2 :(得分:1)
这样的事情会做(一步一步):
input_string = "this is a sample test"
words = input_string.split()
nwords = []
for i in words:
rword = ""
for c in reversed(word):
rword += c
nwords.append(rword)
output_string = " ".join(nwords)
print(output_string)
结果:
siht si a elpmas tset
分步说明:
您将输入文本拆分为字符串列表:
words = input_string.split()
您遍历words
for word in words):
对于每个word
,您准备一个反向词rword
并通过将旧词中的字符相加但反转来构建反向词:
rword = ""
for c in reversed(word):
rword += c
nwords.append(rword)
你重新加入了相反的词 - 但按顺序打印出来:
output_string = " ".join(nwords)
print(output_string)
或者更简单:
input_string = "this is a sample test"
words = input_string.split()
output_string = ""
for word in words:
for c in reversed(word):
output_string += c
output_string += " "
print(output_string)
答案 3 :(得分:0)
word[::-1]
颠倒了名为word
的字符串变量的顺序,该变量是通过迭代句子中的每个分词来获得的。
>>> ' '.join(word[::-1] for word in input_string.split())
'siht si a elpmas tset'
一步一步:
>>> input_string.split()
['this', 'is', 'a', 'sample', 'test']
>>> [word[::-1] for word in input_string.split()]
['siht', 'si', 'a', 'elpmas', 'tset']
>>> ' '.join(word[::-1] for word in input_string.split())
'siht si a elpmas tset'
答案 4 :(得分:0)
到目前为止,所有其他答案都忽略了单词之间或输入字符串的两端有多余空格时的情况。请测试您的代码以验证其是否正常运行。下面提供的main
函数具有一些测试,您可能希望使用它们来验证函数是否正常运行,如果发现代码行为不正确,则可能需要添加更多测试:
def main():
print('Running test 1 ...')
text = 'this is a sample test'
par = preserve_and_reverse(text)
assert par == 'siht si a elpmas tset'
print('Running test 2 ...')
text = 'This is a sample TEST'
par = preserve_and_reverse(text)
assert par == 'sihT si a elpmas TSET'
print('Running test 3 ...')
text = 'This string has some extra spaces'
par = preserve_and_reverse(text)
assert par == 'sihT gnirts sah emos artxe secaps'
print('Running test 4 ...')
text = ' check spaces at string ends '
par = preserve_and_reverse(text)
assert par == ' kcehc secaps ta gnirts sdne '
print('Done!')
def preserve_and_reverse(text):
return ' '.join(word[::-1] for word in text.split(' '))
if __name__ == '__main__':
main()
答案 5 :(得分:-1)
def sample(string):
list=[]
string1=string.split()
for i in string1:
list.append(i[::-1])
print(" ".join(list))
if __name__=="__main__":
input=input("Enter string: ")
sample(input)