簡體   English   中英

使用Python將整數轉換為列表中的字符串時遇到麻煩

[英]Trouble converting integer to string in a list using Python

我正在嘗試將列表中的某些整數轉換為字符串,但是我不斷收到一個錯誤,我認為這與將整數轉換為字符串有關。 我已經嘗試過str(),但似乎無法解決問題。 我想我可能在做其他錯誤。 我的代碼如下:

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)

我想不出另一種解決字符串錯誤的方法。 我搜尋了一下,認為%可能有問題?

這里有些錯誤:

  1. 首先,我建議為函數中定義的參數和稍后輸入函數的實際對象使用不同的名稱。 這將有助於避免對您(作為初學者),對我們(試圖幫助調試代碼)以及將來與您一起工作或與之共事的人員造成混亂。
  2. 您說過您的目標是將一些整數元素轉換為字符串,但是函數中使用的方法只會評估每個元素,然后根據條件(在if語句中) 添加一個附加字符串(“ Fizz”或“ buzz”) 添加到列表中,或元素(e)的其他副本添加到列表中。
  3. 您收到的錯誤是由於for循環到達列表的其他字符串元素而導致的,它不知道如何處理: if ('Fizz' % 3) ==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的字符串使用不同的變量名。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM