2016-10-20 40 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的字符串使用不同的变量名称。

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

相关问题