python-3.x TypeError:%的操作数类型不受支持:“范围”和“整数”

e1xvtsh3  于 2023-02-01  发布在  Python
关注(0)|答案(6)|浏览(189)

编写一个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'
64jmpszr

64jmpszr1#

由于不允许使用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)查看列表,你需要将它转换成列表。如果你只需要迭代这些值并将它们用于其他用途,你不需要进行转换,因为生成器可以很好地工作

b4lqfgs4

b4lqfgs42#

你的老师喜欢它扭曲。可被7整除和5的倍数只是意味着可被7和5都整除,所以35 ...
你的原始代码 * 需要 * 一个循环,但是python有一些内置函数可以生成循环而不需要forwhile语句(它们比forwhile快得多,因为它们通常使用本地编译的C代码)
sshashank124给出了一个很好的答案,但它可以被简化得更多:

  • 通过在下一个35的倍数上"对准" 120来选择适当的range起始点
  • range中使用35的步长

像这样:

>>> list(range(((120//35)+1)*35,200,35))
[140, 175]

它可能快得多,因为它只使用一个除法和乘法,然后只有加法。

ygya80vv

ygya80vv3#

我认为使用列表解析比filter更符合Python的习惯(当然,如果允许的话)。

x = range(120, 200)
valid_nums = [num for num in x if num % 35 == 0]

或在创建时:

valid_nums = [num for num in range(120, 200) if num % 35 == 0]
oyxsuwqo

oyxsuwqo4#

你所要做的是将x定义为一个数字范围,但这将使x成为一个数字列表,你仍然需要遍历每个数字来检查它。由于不允许使用“for循环”,你可以使用while循环或从下限开始递归调用一个函数,直到可通过的参数达到上限。

def func(x):
       if (condition satisfied):
            print(x)
       if x<upper_limit:
            func(x+1)
       return
hs1rzwqc

hs1rzwqc5#

我读到的一个挑战是找出一个范围内所有能被7除尽但不能被5除尽的数字。
这与简单地将问题简化为x % 35是非常不同的,但创建列表解析仍然是解决问题的办法。
以下是对我起作用的方法:

x = range(2000, 3201)
num = [n for n in x if n % 7 == 0 and n % 5 != 0]

完成后,只需print(num),您就有了答案。

xqk2d5yq

xqk2d5yq6#

如果你想一次处理数组元素,你需要使用一个numpy的列表Array,而不是普通的列表Array。
import numpy as np
A1 = list(range(120 , 200))
A2 = np.array(range(120 , 200))
不良→打印(A1[((A2% 7)== 0)+0)!= 0])
确定→打印(A2[((A2% 7)== 0)+0)!= 0])
输出
[126 133 140 147 154 161 168 175 182 189 196条]

相关问题