无法使用Python将整数转换为列表中的字符串

时间:2016-10-20 23:39:32

标签: python string list loops integer

我正在尝试将列表中的某些整数转换为字符串,但我一直在收到一个错误,我认为这与将整数转换为字符串有关。我已经尝试过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)

我无法找到解决字符串错误的另一种方法。我已经四处搜索并认为这可能是%的问题?

2 个答案:

答案 0 :(得分:0)

这里有一些问题:

  1. 首先,我建议您为函数中定义的参数使用不同的名称,然后使用实际的对象来输入函数。这将有助于避免您(作为初学者),我们(尝试帮助调试代码)以及将来您工作或编码的任何人的混淆。
  2. 你说你的目标是将一些整数元素转换为字符串,但是你的函数中使用的方法只会评估每个元素,然后根据条件(在你的if语句中)添加一个额外的元素字符串('Fizz'或'buzz')到列表或添加元素(e)的附加副本到列表中。
  3. 您获得的错误是由于for循环到达列表的其他字符串元素,它们不知道如何处理:if ('Fizz' % 3) ==0:
    模数运算符只能处理整数;不是字符串。

  4. Hopefuly这将为您提供足够的洞察力来修复您的代码。如果没有,那么我们就在这里!

答案 1 :(得分: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的字符串使用不同的变量名。

您的代码还有其他问题;当你碰到它们时再问一遍。