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

Python编写is_prime质数判断函数报SyntaxError无效语法如何修复

问题根因

你触发的SyntaxError: invalid syntax以及代码不符合需求的问题点如下:

  • 语法错误:原代码第2行n = (int(input("Enter a number:"))存在未闭合的多余左括号,直接触发语法报错
  • 职责错位:函数内部写了input输入、print打印逻辑,违反「函数接收整数入参、返回布尔值,打印在拿到返回值后执行」的要求
  • 逻辑bug:for循环直接用入参n做循环变量覆盖了原始入参,循环内使用了未定义的变量j,缺失n=2等边界场景的质数判断,逻辑完全无法正常运行
修正后完整代码
import math

def is_prime(n):
    # 小于等于1的整数非质数
    if n <= 1:
        return False
    # 2是唯一偶质数
    if n == 2:
        return True
    # 大于2的偶数均非质数,提前返回
    if n % 2 == 0:
        return False
    # 遍历到平方根即可判断,步长设为2跳过偶数减少计算
    for i in range(3, int(math.sqrt(n)) + 1, 2):
        if n % i == 0:
            return False
    return True

# 函数外完成输入、返回值获取、打印逻辑
if __name__ == "__main__":
    input_num = int(input("Enter a number:"))
    is_prime_res = is_prime(input_num)
    if is_prime_res:
        print(input_num, "is a prime number")
    else:
        print(input_num, "is not a prime number")
改动说明
  • 修复语法问题:删除多余未闭合的左括号,解决SyntaxError报错
  • 对齐需求:函数仅保留质数判断逻辑,接收整数入参,全程返回布尔值;输入获取、结果打印全部移到函数外部,在拿到函数返回值后执行打印
  • 修复逻辑漏洞:替换会覆盖入参的循环变量名,移除未定义的j变量,补全边界值判断逻辑
  • 性能优化:将原代码遍历到n/2的逻辑优化为遍历到n的平方根,提前过滤偶数,减少无效循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:57:08