使用Python将列表中的整数转换为字符串时出现问题

2024-05-15 06:49:36 发布

您现在位置: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)

我想不出另一种方法来修复字符串错误。我到处找了找,觉得%可能有问题


Tags: 字符串inforifdef错误整数print
2条回答

这里有一些错误:

  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的字符串使用不同的变量名

你的代码还有其他问题;当你遇到他们时再问一次

相关问题 更多 >