如何在第二个while循环素数校验前添加整数相等判断条件
实现方案
你需要在第二个输入循环的整数转换成功后、素数校验前插入等值判断逻辑,调整规则如下:
- 拿到用户输入的合法整数Q后,第一优先级判断Q是否和已确认的素数P相等
- 若两值相等,直接输出重复输入提示,终止当前轮次逻辑,让用户重新输入
- 仅当Q和P不相等时,才进入后续的素数校验流程
- 顺带修复原代码的两处小问题:一是非素数提示时打印空列表的逻辑错误,改为直接输出用户当前输入的数值;二是将所有英文提示翻译为中文,符合使用需求
修改后完整代码
value_P = [] value_Q = [] def is_prime(num): if num == 2: return True if num < 2 or num % 2 == 0: return False for n in range(3, int(num**0.5)+2, 2): if num % n == 0: return False return True while True: try: P = int(input("请输入第一个素数(P): ")) if is_prime(P): value_P.append(P) print("已确认P =", P) break else: print(P, "不是素数,请重新输入") except ValueError: print("输入无效,请输入整数值...") continue # 第二个输入循环 while True: try: Q = int(input("请输入第二个素数(Q),注意不能和之前输入的P值相同: ")) # 前置判等:和P重复则直接重输,不进入素数校验环节 if Q == P: print("输入值和P完全相同,请输入不同的整数值") continue # 确认值不重复后,再执行素数校验 if is_prime(Q): value_Q.append(Q) print("已确认Q =", Q) break else: print(Q, "不是素数,请重新输入") except ValueError: print("输入无效,请输入整数值...") continue
逻辑说明
- 第一个循环保持原有素数校验能力,负责获取合法的第一个素数P
- 第二个循环严格遵循要求:先做等值校验,只要输入和P相等,无论是不是素数都直接触发重输提示,等值校验通过后才会判断输入是否为素数
- 原有的非整数输入异常捕获逻辑完全保留,输入类型错误时会给出对应提示
内容的提问来源于stack exchange,提问作者A.Brusola
相关产品推荐
相关产品推荐

