2017-09-26 42 views
1

挑戰:編寫一個將字符串作爲參數的函數,並創建一個新字符串,該字符串是除了每個非字母被替換爲空格 (例如,「pl @ dz &y」改變爲「pldzy」)之外。 要編寫這樣一個函數,您將從一個空字符串開始,逐個遍歷參數的字符。當遇到可接受的字符時,將其添加到新字符串中。當它不可接受時,可以爲新字符串添加空格。請注意,您可以通過簡單的比較來檢查某個字符是否可以接受。例如,可以使用該測試找到任何小寫字母。使用字符串作爲參數編寫函數,創建新字符串作爲複製參數,但非字母被替換爲空格

我迄今爲止嘗試:

def character_replacement(string): 
string_new = "" 
for char in string: 
    if char >= 'a' and char <= 'z' == True: 
     string_new += char 
    if char >= 'A' and char <= 'Z' == True: 
     string_new += char 
    if char >= 'a' and char <= 'z' == False: 
     string_new += " " 
    if char >= 'A' and char <= 'Z' == False: 
     string_new += " " 
return string_new 

string = input("Input string, with or without special characters: ") 
character_replacement(string) 

仍然在努力寫一個工作功能,以及如何「打印」或「回報」的東西。

+0

您需要以某種方式使用返回的值。例如'result = character_replacement(string)'後跟'print(result)' – Duncan

+0

@Duncan:這真的很有幫助,謝謝! – GJ01

回答

0

==and之前評估。你可以用括號包住你的條件,以獲得正確的結果:

if (char >= 'a' and char <= 'z') == True: 
    string_new += char 
if (char >= 'A' and char <= 'Z') == True: 
    string_new += char 
if (char >= 'a' and char <= 'z') == False: 
    string_new += " " 
if (char >= 'A' and char <= 'Z') == False: 
    string_new += " " 

或者只是省略了==部分乾脆,並評估你的布爾表達式:

if char >= 'a' and char <= 'z': 
    string_new += char 
if char >= 'A' and char <= 'Z': 
    string_new += char 
if not (char >= 'a' and char <= 'z'): 
    string_new += " " 
if not (char >= 'A' and char <= 'Z'): 
    string_new += " " 

編輯:
請注意,這樣

if char.isalpha(): 
    string_new += char 
else: 
    string_new += " " 

雖然你在它,你可以Y:使用內置isalpha()方法進行更優雅ust將整個方法改寫爲對字符串字符的理解:

def character_replacement(s): 
    return "".join(c if c.isalpha() else " " for c in s) 
+0

這真是太好了,我還沒有學會'優雅'的方法,所以我現在堅持第一。謝謝! – GJ01