【问题标题】:I'm trying to print a list. It gives type error [duplicate]我正在尝试打印一个列表。它给出类型错误[重复]
【发布时间】:2020-11-12 16:41:33
【问题描述】:

我正在尝试打印一个列表。它给出了类型错误。

buyList = ["Potato", "Suger", "Rice", "Oil", "Cake", "Biscuit"]

for i in buyList:
    if i % 2 is not 0:
        print(i, end=" ")
        i += 1

错误

TypeError: not all arguments converted during string formatting

【问题讨论】:

  • i 是列表的元素,因此它是一个字符串(例如:“Potato”)而不是数字
  • 做,你有什么问题?你有没有做过 any 调试,比如打印 i 并查看它是什么?尝试各种操作并举例说明?查找错误消息?请停止像您的个人调试服务一样使用 StackOverflow。另外,永远不要使用 is 来表示相等,它是身份运算符,这在技术上是错误的(尽管由于实现细节,x is 0 大部分时间都可以工作......但不是所有时间)

标签: python python-3.x


【解决方案1】:

您必须使用列表的索引进行迭代。无需在for 循环中增加循环变量

In [79]: buyList = ["Potato", "Suger", "Rice", "Oil", "Cake", "Biscuit"]
    ...:
    ...: for i in range(len(buyList)):
    ...:     if i % 2 != 0:
    ...:         print(buyList[i], end=" ")
    ...:
Suger Oil Biscuit

另一种方法是使用enumerate,它给出索引+值。

In [80]: buyList = ["Potato", "Suger", "Rice", "Oil", "Cake", "Biscuit"]
    ...:
    ...: for index, value in enumerate(buyList):
    ...:     if index % 2 != 0:
    ...:         print(value, end=" ")
    ...:
Suger Oil Biscuit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2017-08-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多