2017-09-14 8 views
0

リスト内の一部の項目を修正するのが本当に困難です。 は、私は、データベースに匹敵するリストを持っている、と私は99リスト内の項目を修正しても出力が得られません

database = [2,5,11,33,78498,'abcqwe',13, 18,11,1993,'defrty'] 

def missing_values(i): 
    for i in database: 
     if type(i) == str: 
      i = 99 
    return 'Database cleaned' 

に(私はのように欠損値を検討する)文字列値を変換したい、私はそれを実行すると、構文エラーは、「にもかかわらず、存在しませんデータベースがクリーニングされました "というメッセージは表示されません。私が(データベース)を印刷すると、実際に何も変わっていないことがわかります。私は間違っているの?

答えて

0

missing_values()関数をファイル内のどこかに呼び出す必要があります。そうしないと、コードは決して実行されません。あなたは、引数iを必要としないmissing_valuesと同じスコープでdatabase変数が定義されているよう

missing_values()

また、見て。

0

クリーニング済みのリストが表示されない理由は、クリーニング後にリストを返さないためです。代わりに、元のリストを変更せずにmsgを印刷するだけです。

database = [2,5,11,33,78498,'abcqwe',13, 18,11,1993,'defrty'] 

def missing_values(i): 
    for i in database: 
     if type(database[i]) == str: 
      database[i] = 99 
    print 'Database cleaned' 
    return database 

また、関数で使用する引数を "i"から "database"に変更する必要があります。私は、 "i"パラメータがクリーニングが必要なリストになっていると仮定しました。

0

あなたは関数を適切に呼び出すわけではありません。あなたのコードのどこかでmissing_values()が呼び出されていることを確認してください。

2

この関数では、iから99に設定しますが、リストの値は決して使用しません。あなたはまた、安倍が言ったように関数を呼び出すことを確認する必要があり

database[database.index(i)] = 99 

:あなたはi = 99を設定する場合は、あなたが最初にあなたのリストで、この値のインデックスを取得する必要があり、このような値を設定します。この関数に値を渡す必要もありません。

関連する問題