【问题标题】:typeerror unsupported operand type(s) for %: 'list' and 'int'typeerror 不支持的操作数类型为 %: 'list' 和 'int'
【发布时间】:2012-09-06 20:37:59
【问题描述】:

代码如下:

list = [2, 3, 5, 7, 11, 13]
list2 = [range(list[-1], 2000000)]
y =11
x = 1
v = list[-1]>= x
while list[-1] ** 2 < 2000000:
    y= y + 2
    prime = True
    while prime == True:    
        for x in list:
            if x * 2 < y:   
                if y % x == 0:
                    prime = False
                    break
        if prime == True:
            list.append(y)
            prime = False
print sum(list)

for u in list:
    for w in list2:
        if u * u < w:
            if w % u == 0:
                list2.pop(w)
print list
print sum(list) + sum(list2)

如您所见,这是一个基本程序,它创建一个筛子,然后为其放入最多 200 万个数字。这是针对 Euler 项目的,我正在尝试在学习编程时测试我的技能。

目前,本文标题为第 23 行的错误。发生这种情况的原因有哪些?

【问题讨论】:

  • 我删除了你的大部分帖子,只关注问题本身。如需有关 Stack Overflow 本身的帮助,请转至 meta.stackoverflow.com。有关格式化,请参见 How do I format my code blocks? 示例。
  • Python 编程备注:不要命名变量list,已经有一个内置类型list 你现在已经隐藏了。
  • 你的 cmets 很棒而且很有帮助。

标签: python list int typeerror


【解决方案1】:

range() 已经返回了一个列表,但是你把它放到了一个新的列表中:

list2 = [range(list[-1], 2000000)]

这会产生一个包含列表的列表,并且稍后将w 设置为完整范围。只需删除那里的括号即可。

>>> [range(5)]
[[0, 1, 2, 3, 4]]
>>> range(5)
[0, 1, 2, 3, 4]

【讨论】:

  • @goldenparrot:OP(在帖子的长版中)表示他们在格式化方面已经尽力了,但这是一个常见的发布错误,不一定是原始代码中的任何内容。在这种情况下会出现语法错误。
  • 谢谢。接受了答案。我会投赞成票,但我没有这方面的声誉。
猜你喜欢
  • 2012-12-12
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2021-09-21
  • 1970-01-01
相关资源
最近更新 更多