2014-11-15 17 views
0
boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark") 

startn=() 
uname=raw_input("What is your first name?: ") 
begin=uname[0] 
for name2 in range(len(boys)): 
    if begin== boys[name[0]]: 
      startn+=(boys[name2],) 
      print startn,"start with",begin 

    else: 
      print "Sorry there are no names that begin with", begin 
+0

很容易地比較每個的第一個字符,我嘗試所有它的工作,但是當我打印出來只有m工作和其他字母,如j所有不起作用。我在for循環之後打印出name2 [0],並且打印出這是怎麼回事? – noel

回答

0

訪問boys當你使用name[0]爲索引啓動元組中的所有名稱。你想使用name2

if begin == boys[name2][0]: 
    startn += boys[name2] 

或者你可以遍歷數組boys本身:

for boy_name in boys: 
    boy_name[0] == begin: 
     startn += boy_name 

(我不是很確定你與startn做什麼,你的天堂」牛逼包括你的代碼是位)

0

至於這個目的使用str.startswith()一個Python的方式:

>>> boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark") 
>>> boys[1].startswith('a') 
True 
>>> boys[2].startswith('b') 
False 

所以,你的代碼必須是:

boys=("david","andrew","ted","tom","james","nicholas","kyle","michael","mark") 

startn=() 
uname=raw_input("What is your first name?: ") 
for name2 in boys: 
    if name2.startswith(uname[0]): 
      startn+=(boys[name2],) 
      print startn,"start with",begin 

    else: 
      print "Sorry there are no names that begin with", begin 
0

有幾件事情可以改善這裏。讓我們看看我們如何清理這個問題並使其工作。

for name2 in range(len(boys)): 

你不需要range()len()電話。如果你想遍歷名字,你直接用你的for循環來做。

for name in boys: 

現在在你的循環中你有兩個變量。您輸入的名稱爲uname,循環中的當前名稱爲name。你可以通過比較uname[0]name[0]name[0]

+0

爲男孩name2: 如果uname [0] == name2 [0]: startn + =(name2,) 只有m工作我試着J和其他字母,但它不工作 – noel

相關問題