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

关于Python质数打印代码的两处语法疑问求助

问题解答

原代码

Nums = range(1,60)

def is_prime(Nums):
    for x in range(2, Nums):
        if (Nums%x) ==0:
            return False
    return True

prime_numbers = list(filter(is_prime,Nums))

Print(prime_numbers)

关于for x in range(2, Nums)为何没报错

你混淆了变量的作用域:这里的Nums不是外层定义的range(1,60),而是filter函数遍历range(1,60)时,逐个传入的单个整数元素(比如1、2、3……59)。filter的逻辑是把可迭代对象里的每个元素,单独作为参数传给is_prime函数,所以is_prime内部的Nums本质是整数,range(2, Nums)完全合法,不会报错。

建议把函数参数名改成n之类的不同名字,避免和外层变量重名导致混淆。

关于if (Nums%x) ==0的含义

  • %是Python的取模运算符,用来计算两个整数相除后的余数。
  • Nums%x == 0表示:Nums除以x的余数为0,也就是Nums能被x整除。一旦满足这个条件,说明Nums不是质数,函数直接返回False终止判断。

额外提一句:原代码最后一行的Print是错误的,Python内置打印函数是小写的print,不改会触发NameError。

内容的提问来源于stack exchange,提问作者Nani Selase

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:24:53