2016-10-20 43 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'或'buzz')添加到列表中或添加到列表中的元素(e)的額外副本。
  3. 你所得到的錯誤是由於for循環到達列表,它不知道如何處理這些額外元素:if ('Fizz' % 3) ==0:
    模運算符只能處理整數;不是字符串。

希望這會爲您提供足夠的洞察力來解決您的代碼。如果不是那麼我們就在這裏!

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中,帶有字符串的%與使用數字(它會將值替換爲數字)完全不同,並且錯誤消息與該數字相關。

解決方法是對包含FizzBuzz的字符串使用不同的變量名稱。

您的代碼還有其他問題;當你遇到他們時再問一次。

相關問題