TypeError: %: 'range' 和 'int' 不支持的操作数类型

新手上路,请多包涵

编写一个 Python 程序,在不使用“for 循环”的情况下查找 120 到 200 之间可被 7 和 5 的倍数整除的数字。

我试图以这种方式解决…

 x = range(120, 200)
if x % 7 == 0 and x % 5 == 0:
    print(x)

但是我确实收到了这个错误。我会错过什么?

 Traceback (most recent call last):
File "C:\Users\User\Desktop\skillshare-code\if else statements\4.py", line
    11, in <module>
if x % 7 == 0 and x % 5 == 0:
TypeError: unsupported operand type(s) for %: 'range' and 'int'

原文由 Nelson M 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
1 个回答

由于您不允许使用 for 构造,您可以使用 filter 方法完成此操作:

 valid_nums = filter(lambda x: x % 35 == 0, range(120, 200))

请注意,问题不是要求您打印数字,而是“查找”它们,这意味着创建某种形式的列表或有效值的集合

PS:我做了 x % 35 == 0 因为“除以”和“倍数”意味着同一件事,所以 35 来自 7*5

PPS: filter 返回一个过滤器对象,它是一个生成器。如果您想通过执行 list(valid_nums) 查看列表,则需要将其转换为列表。如果您只需要遍历值并将它们用于其他用途,则不需要进行转换,因为生成器可以很好地工作

原文由 sshashank124 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题