Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:不支持%的操作数类型:';范围';和';int';_Python_Python 3.x_If Statement_Range - Fatal编程技术网

Python TypeError:不支持%的操作数类型:';范围';和';int';

Python TypeError:不支持%的操作数类型:';范围';和';int';,python,python-3.x,if-statement,range,Python,Python 3.x,If Statement,Range,编写一个Python程序来查找120到200之间的数字,这些数字可以被7整除,也可以是5的倍数,而不需要使用“for循环” 我试着这样解决 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\

编写一个Python程序来查找120到200之间的数字,这些数字可以被7整除,也可以是5的倍数,而不需要使用“for循环”

我试着这样解决

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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\User\Desktop\skillshare code\if else statements\4.py”,第行
11,在
如果x%7==0和x%5==0:
TypeError:不支持%:“range”和“int”的操作数类型

由于不允许将
用于
构造,因此可以通过以下方法完成此操作:

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

PS:我做了
x%35==0
,因为“可除的”和“的倍数”的意思是相同的,所以35来自
7*5


PPS:
filter
返回作为生成器的筛选器对象。如果您想通过执行
list(valid\u nums)
查看列表,则需要将其转换为列表。如果您只需要遍历这些值并将它们用于其他用途,则无需进行转换,因为生成器可以很好地处理这些值

,因为不允许您将
用于
构造,您可以通过以下方法完成此操作:

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

PS:我做了
x%35==0
,因为“可除的”和“的倍数”的意思是相同的,所以35来自
7*5


PPS:
filter
返回作为生成器的筛选器对象。如果您想通过执行
list(valid\u nums)
查看列表,则需要将其转换为列表。如果您只需要遍历这些值并将它们用于其他用途,则无需进行转换,因为生成器可以很好地处理这些值,您尝试将x定义为一个数字范围,但这将使x成为一个数字列表,并且您仍然需要检查每个数字。因为“for循环”是不允许的,所以可以使用while循环或从下限开始递归调用函数,直到可通过的参数达到上限

def func(x):
       if (condition satisfied):
            print(x)
       if x<upper_limit:
            func(x+1)
       return
def func(x):
如果(条件满足):
打印(x)

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

def func(x):
       if (condition satisfied):
            print(x)
       if x<upper_limit:
            func(x+1)
       return
def func(x):
如果(条件满足):
打印(x)

如果你的老师喜欢它。被7整除和5的倍数只是意味着同时被7和5整除,所以35

您的原始代码需要一个循环。但是python有一些内置函数,它们在生成循环时不使用
for
while
语句(它们比
for
while
要快得多,因为它们通常使用本机编译的C代码)

sshashank124给出了一个很好的答案,但可以通过以下方式进一步简化:

  • 通过在35的下一个倍数上“对齐”120,选择适当的
    范围
    起点
  • 范围内使用35步
像这样:

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

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

你的老师喜欢它。被7整除和5的倍数只是意味着同时被7和5整除,所以35

您的原始代码需要一个循环。但是python有一些内置函数,它们在生成循环时不使用
for
while
语句(它们比
for
while
要快得多,因为它们通常使用本机编译的C代码)

sshashank124给出了一个很好的答案,但可以通过以下方式进一步简化:

  • 通过在35的下一个倍数上“对齐”120,选择适当的
    范围
    起点
  • 范围内使用35步
像这样:

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

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

我认为对于Python来说,使用列表理解比使用
过滤器更为惯用(当然,如果允许的话)

或在创建时:

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

我认为对于Python来说,使用列表理解比使用
filter
(当然,如果允许的话)更为惯用

或在创建时:

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

我阅读的一个挑战是找到一个范围内所有可以被7整除但不能被5整除的数字

这与将问题简化为
x%35
非常不同。尽管如此,创建一个理解列表仍然是答案

以下是对我有效的方法:

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

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

我的阅读挑战之一是找到一个范围内所有可被7整除但不能被5整除的数字

这与将问题简化为
x%35
非常不同。尽管如此,创建一个理解列表仍然是答案

以下是对我有效的方法:

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

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

您需要循环检查
x
中的所有值,但不允许使用
来构造“我可能遗漏了什么?”
%
仅对单个数字有效,你试图在一系列数字上使用它。如果你给它们一个可数的对象,大多数运算不会自动循环。“它可以被7整除并乘以5”:你的老师有幽默感(还有头脑风暴:)@Jean Françoisfare我盯着它想了这么久,他是指3吗