2016-10-20 4 views
0

リスト内の特定の整数を文字列に変換しようとしていますが、整数を文字列に変換する際にエラーが発生します。私はstr()を試しましたが、問題を解決していないようです。私は別のことをやっているかもしれないと思う。次のように私のコードは次のとおりです。Pythonを使用してリスト内の整数から文字列への変換に問題があります

intList = [1,2,3,4,5] 

def fizzbuzz(intList): 

    for e in intList: 
     if (e % 3) ==0: 
      e='Fizz'.join(str(e) for e in intList) 
     if (e % 5) ==0: 
      e='Buzz'.join(str(e) for e in intList) 

print fizzbuzz (intList) 

私はこのエラーを取得する:

TypeError: not all arguments converted during string formatting 

私もそれを少し変えてみましたが、エラーを書式文字列と同じ文字列を取得しておくました:

def fizzbuzz(intList): 

    for e in intList: 
     if (e % 3) ==0: 
      intList.append(str('Fizz')) 
     elif (e % 5) ==0: 
      intList.append(str('Buzz')) 
     else: 
      intList.append(e) 

print fizzbuzz (intList) 

私は文字列のエラーを修正する別の方法を考え出すことはできません。私は周りを探索し、それが%の問題かもしれないと思いますか?

答えて

0

は間違ってここにいくつかのことがあります:私はあなたの関数で定義されたパラメータと後で機能に送り、実際のオブジェクトに別の名前を使用することをお勧めしますすべての

  1. まず。これは、あなた(初心者)、私たち(コードのデバッグを助ける)、将来あなたが働く人やコードする人の混乱を避けるのに役立ちます。
  2. あなたの目標は、整数要素を文字列に変換することでしたが、関数で使用されるメソッドは各要素を評価し、条件(if文の場合)に基づいています追加の文字列 'Fizz'または「バズ」)をリストに追加するか、を追加して、要素(e)の追加コピーをに追加します。
  3. エラーはforループがそれらの追加の文字列の要素に達し、処理方法がわからないために発生します。if ('Fizz' % 3) ==0:
    モジュラス演算子は整数のみを処理できます。文字列ではありません。

Hopefulyこれはあなたのコードを修正するのに十分な洞察を提供します。そうでなければ我々はここにいる!

0

問題は、このコードのセクションである:

if (e % 3) ==0: 
    e='Fizz'.join(str(e) for e in intList) 
if (e % 5) ==0: 
    e='Buzz'.join(str(e) for e in intList) 

eが3で割り切れる場合、eを文字列に変更されます。次にif文は、%e(文字列)に5を返します。Pythonでは、文字列を持つ%は数値とはまったく異なります(値を代入します)。エラーメッセージはそれに関連しています。

解決策は、FizzまたはBuzzを含む文字列に別の変数名を使用することです。

コードには他にも問題があります。あなたがそれらに遭遇したときに再度尋ねる。

関連する問題