2016-02-24 36 views
0

收件接受由空格 包括字母字符分隔的單詞的字符串並返回一個字符串,使得同時在輸入字符串的話 的順序被保存 在輸入串中的每個字被反轉的功能。大寫在這裏確實很重要。輸入字符串的 長度必須等於輸出字符串 的長度,即在您的 輸出字符串中不應該有尾隨或前導空格。例如,如果:如何保留和反轉一個字符串?

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) 

我沒有得到任何幫助e與代碼。我應該嘗試一種不同的方法來遍歷每個字符,當我遇到一個空白區域時,只需對字符串進行切片,然後執行反向操作? 任何幫助,將不勝感激。

+0

擺脫輸入和硬編碼的字符串值,例如中'input_str ='瑪麗有一隻小羊羔'。這將使測試周期更快。 –

+1

什麼是'split_list_advance'? – jsfan

回答

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 

一步一步的解釋:

  1. 您分裂您輸入的文本字符串列表:

    words = input_string.split() 
    
  2. 您遍歷words

    for word in words): 
    
  3. 對於每個word ,你準備一個反向詞rword和從老字加入了人物建立的反字,但逆轉:

    rword = "" 
    for c in reversed(word): 
        rword += c 
    nwords.append(rword) 
    
  4. 您重新反轉的話 - 但爲了和打印:

    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) 
+1

爲什麼不說「用言語表達:'? –

+0

玩這個,會're.split(r'\ b'',input_string)'更準確嗎? – cdarke

+0

@cdarke它的意思是一步一步實際上... – Ian

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' 
0

word[::-1]逆轉命名字符串變量的順序通過遍歷句子中的每個拆分詞獲得。

>>> ' '.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' 
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)