2017-01-09 24 views
1

因此,我的作業分配是使用用戶輸入來定義變量,從給定字符串中刪除給定名稱的首字母縮寫。當我運行下面的腳本時,它只註冊一個名字。刪除給定字符串中的字母

def removeChar(initials, string): 
    initials = initials 
    string = string 
    for char in initials: 
     modified = string.replace(char, "") 
    print modified 
    return modified 



def getInitials(name, string): 
    initials = "" 
    for i in name.lower().split(): 
     initials += i[0] 
    print initials 
    removeChar(initials, string) 



def main(): 
    name = raw_input("What is your name? \n") 
    string = raw_input("What string would you like to remove your initials from? \n") 
    getInitials(name, string) 

這是輸出:

What is your name? 
John Doe 
What string would you like to remove your initials from? 
Arjajbian Ndigdhts 

Arjajbian Nights 

爲什麼不刪除它的首字母?

+5

只是一個提示:'字符串=字符串'和'首字母=首字母'是完全不必要的。 –

+0

授予使用Python已經有一段時間了,但是您是否嘗試刪除名稱之間的空格,然後根據字符創建數組? –

+0

另外,'string'是Python標準庫的一部分... – 2017-01-09 21:44:35

回答

6

你的問題就在這裏:

modified = string.replace(char, "") 

你總是在原始字符串使用replace,所以它會從原來的字符串中的每個個性,並返回一個新的。只需使用string = string.replace(char, "")

否則您的函數將始終返回一個字符串,該字符串是最後一個最初刪除的字符串。

+0

謝謝,這個固定它,我會標記它答案,當它允許我 –

0

雖然@ juanpa.arrivillaga指出了你的問題,但是從輸入字符串中刪除字符jd有更多的Pythonic方法;使用generator expression

>>> input_str = "Arjajbian Ndigdhts" 
>>> ''.join(c for c in input_str if c.lower() not in 'jd') 
'Arabian Nights' 
>>> 

這個工程通過input_str迭代,只將字符傳遞''.join()這是jd

+0

我不認爲我們瞭解了這一點,但非常感謝你 –

+0

@EshChhura當然可以。只是想一想;-)如果您想了解更多信息,我還包含了一個關於_generator表達式的頁面的鏈接。 –

0

你不需要的

initials = initials 
    string = string 

,因爲這無助你告訴做出同樣的這個變量,因爲它已經是 也 我認爲是這樣的

modified = string.replace(char, "") 

你做這個創造一個變量叫做modified,但後來在代碼中你說要得到String而不是modified 要麼改變String to modified除了fr om在頂部定義或更改modified to string,然後它將有望工作

相關問題