2016-03-08 128 views
2

我能夠找出問題!謝謝大家的意見和建議和教練:)。字符串切片,搜索字符

這是我最後的結果和它的作品只是罰款:(「!?大家好,歡迎什麼是第一個和最後一個名字」)

打印

名稱=輸入() 打印(「有是」,LEN(名稱), 「你的名字的字母。」)

打印( 「你想什麼信您的姓名搜索?」)

信=輸入()

打印( 「你想什麼信您的姓名搜索?」)

信=輸入()

如果letter.lower:

find_letter = name.find(字母)

print(find_letter+1) 

如果letter.upper:

find_letter = name.find(letter) 

print(find_letter+1) 

希望這會出現在整潔我的提交,還沒有想出如何讓它看起來像代碼,當我提交它呢...我認爲它會自動糾正它,如果它識別代碼

+0

你要查找的字母或所有出現的第一次出現? – timgeb

+0

這是找到所有的事件,但得到了很大的幫助:) – Wbsauls255

+0

好吧,如果你想找到所有的事件,'str.find'不是一個好方法。它只會找到第一個出現,並且通過連續切片來查找所有出現的事件會變得很難看。 – timgeb

回答

0

我不確定你的意思,但這是怎麼回事?

print("Hello, and welcome! What is first and last name?") 
name = input() 
print("There are", len(name), "letters in your name.") 
print("What letter would you like to search for in your name?") 
letter = input() 
if letter: 
    find_letter = name.find(letter) 
    print(find_letter+1) 
+0

解釋哈哈是令人困惑的,但我會嘗試一下! – Wbsauls255

+0

完美!這就是我正在嘗試去...我忘記了如果聲明...分配部分如下:首先,要求用戶輸入他們的名字,首先和最後。然後要求用戶輸入一個他們希望以他們的名字找到的信。計算該名稱出現在其名稱中的次數,並打印出計數。 (請務必統計字母的小寫和大寫實例) – Wbsauls255

+0

問題,現在爲什麼只是「if letter:」?不應該有更多的加入像< >或=? – Wbsauls255

1

str.find只會給你的性格中第一次出現的索引,例如:

>>> s = 'hello' 
>>> s.find('l') 
2 

爲了找到所有出現,最好是枚舉串並記住與搜索字符匹配的字符的索引。

演示:

>>> name = input('input a name: ') 
input a name: John Doe 
>>> find_me = input('input character to search for: ') 
input character to search for: o 
>>> [index for index, char in enumerate(name) if char == find_me] 
[1, 6] 

結果列表告訴你的性格'o'可以在索引1名6中找到。如果你想要一個偏移量(例如,從1開始計數的指標,而不是在零),將其指定爲第二個參數enumerate

>>> [index for index, char in enumerate(name, 1) if char == find_me] 
[2, 7] 

結果名單告訴你的是,信'o'可以在這裏找到名稱的第二個和第七個字符(如果您從1開始計數)。

編輯:

從意見,我有一種感覺,你也許只是想算一個字母的討論。

,只用字符串的方法count爲:

>>> name = input('input a name: ') 
input a name: John Doe Schmo 
>>> find_me = input('input character to search for: ') 
input character to search for: o 
>>> name.count(find_me) 
3