You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python问题:无for循环找120-200间被7和5整除的数报错求解

解决你的Python代码问题

先来看你遇到的问题——你写的代码触发了TypeError,咱们先拆解原因:

你的尝试代码:

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'

错误根源

你把x赋值成了range(120, 200),这是一个range对象,它代表的是一个整数序列,而不是单个整数。Python没办法对一个序列和整数做取模(%)运算,所以直接报错了。

满足需求的解决方案(无for循环)

你的需求是:找出120到200之间能同时被7和5整除的数,且不能用for循环。咱们有两种简洁的实现方式:

方法一:利用数学规律 + range步长(最优解)

能同时被7和5整除的数,一定是它们最小公倍数的倍数。7和5互质,最小公倍数是35,所以咱们只需要找120-200之间所有35的倍数即可,不用逐个遍历。

步骤:

  • 找到第一个≥120的35的倍数:35 × 4 = 140(35×3=105小于120,不符合)
  • 用range生成从140开始,步长为35,到201结束的序列(因为range是左闭右开,所以终点设为201才能包含200以内的数)
  • 直接打印序列里的所有数

代码:

# 生成符合条件的数的序列
valid_numbers = range(140, 201, 35)
# 展开打印所有数
print(*valid_numbers)

运行结果:140 175

方法二:用while循环替代for循环

如果不想用range的步长技巧,也可以用while循环逐个检查(完全不涉及for循环):

current = 120
while current <= 200:
    if current % 7 == 0 and current % 5 == 0:
        print(current)
    current += 1

这个逻辑很直观:从120开始逐个检查每个数,符合条件就打印,直到current超过200为止。

内容的提问来源于stack exchange,提问作者Nelson M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:08:14