2017-08-24 14 views
0

text1、text2、... text9という9つのテキストがあります。関数は以下のように定義されます。Pythonで変数に動的にアクセスする

次のコードを使用して、9つのテキストすべてに対してこの関数を呼び出す必要があります。しかし、アウトプットは間違っています。

for i in range(1,10): 
    a='text'+str(i) 
    print(lexical_diversity(a)) 

マイ出力テキスト1に関数を適用した場合

0.8 
0.8 
... 
0.8 

ですが、私は次のような結果を得ます。

>>>lexical_diversity(text1) 
    Out[37]:0.07406285585022564 

どの部分が間違っていますか?

+1

:名前が与えられ

は、あなたはおそらくlistであなたのtext秒を格納検討すべき? –

+1

'' text '+ str(i) '' text1 "'、 '' text2 "'、...実際の文字列を返します。だから、あなたは '' text1''、 '' text2''の字句的多様性を得るでしょう。あなたがアクセスしたいテキストが複数あるならば、それを配列に格納したいでしょう。それらの上に。 – spectras

+0

@spectras私のエラーが表示されます。ありがとう。とにかくそれを修正するには? –

答えて

3

a = 'text' + str(i)は、変数text1の中に含まれているものの値をaに魔法のように与えないことを理解する必要があります。代わりにa文字列"text1"に割り当てられます。 2つはではなく、と同じです。含まれているテキスト1何

texts = [text1, text2, text3, ...] 

そして今、

for a in texts: 
    print(lexical_diversity(a)) 
+0

名前を与えて私は配列を主張します。 'texts [i]'は 'texts [" str(i)]よりも優れています。 – spectras

+0

私は自分の変数名が与えられていることを意味しています。私は 'text1'、' text2'、...にセマンティックな内容がないと信じています。単にテキストを持ち、変数名に数字を追加しました。 – spectras

+0

@spectrasはい、あなたは正しいです。 –

0

のpython3

def lexical_diversity(text): 
    return len(set(text))/len(text) 
lista = [] 
for i in range(1,10): 
    lista.append("text%d" % i) 
for resVal in lista: 
    print(resVal) 
    print(lexical_diversity(resVal)) 
関連する問題