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

Python 3如何实现接收用户输入列表并筛选出其中所有素数

代码问题点

你的代码存在4个核心问题,直接导致无法实现需求:

  • 输入处理无效:input() 接收的内容是字符串格式,你写的list(my_list)既没有把字符串转换成整数数值列表,也没有把转换结果赋值给变量,属于无效代码;后续直接遍历my_list拿到的是字符串里的单个字符,无法进行数值取余运算。
  • 语法错误:return 只能在函数内部使用,全局代码块中直接写return会直接抛出语法异常,程序根本无法运行。
  • 素数判断逻辑有缺陷:没有提前排除小于2的数(0、1、负数都不属于素数),原有判断逻辑会把非素数误判为素数。
  • 素数判断效率低:原有逻辑要从1遍历到i-1,数值稍大时运行速度很慢。
修正后可运行代码
# 封装素数判断逻辑
def check_prime(num):
    if num < 2:
        return False
    # 遍历到num的平方根即可完成判断,减少无效循环
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

# 接收用户输入,提示输入格式:多个数字用英文逗号分隔,例如 2,3,6,9,17,20
user_input = input("请输入待筛选的数字,多个数字用英文逗号分隔:")
# 拆分输入内容,转换为整数列表
num_list = [int(item.strip()) for item in user_input.split(',')]

# 筛选素数
prime_result = [n for n in num_list if check_prime(n)]
print("筛选得到的素数:", prime_result)
使用说明
  • 运行程序后,按照提示输入数字即可,比如输入1,2,3,4,5,6,7,8,9,11,程序会输出筛选得到的素数: [2, 3, 5, 7, 11]。
  • 如果需要支持其他输入格式(比如空格分隔数字),只需要修改split()里的分隔符参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:54:25