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
相关产品推荐
相关产品推荐

