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

如何在第二个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:15:36