2017-03-15 2 views
0

関数定義内で結果を得たいと思っています。 forループを使用すると完全に動作しますが、defを使用すると、最初の項目しか表示されません。関数定義のインデックスと項目を返すか?

text= "I am not a student, but I like to be " 
text1= text.split() 

for index,item in enumerate(text1): 
    print (index, item) 

出力:

0 I 
1 am 
2 not 
3 a 
4 student, 
5 but 
6 I 
7 like 
8 to 
9 be 

しかし、これは機能def内で動作しません。あなたは1つの中で結果を得るのを助けてくれますか?

text= "I am not a student,but I like to be " 
text1= text.split() 

def words(text): 
    for index,item in enumerate(text1): 
     return index, item 

words(text1) 

出力:

(0, 'I') 
+0

理由あなたは最初の項目を返すので、 'return list(enumerate(text1))' – dnit13

答えて

2

returnは、関数を終了し、それが終わっていないことを決して、関数の中で何をしていたか中断。

最初の値を返さず、最初の例のようにすべての値を出力すると、同じ出力が表示されます。

0

forループの最初の反復中に、関数内のreturnが実行を終了するという問題があります。以下に示すように、非機能バージョンと同じことを行うために、あなたは、それの内print()に値の各ペアを必要とするだろう:

from __future__ import print_function 

def words(text): 
    for index,item in enumerate(text1): 
     print(index, item) 

text1 = "I am not a student, but I like to be ".split() 

words(text1) 

出力:

0 I 
1 am 
2 not 
3 a 
4 student, 
5 but 
6 I 
7 like 
8 to 
9 be 
関連する問題