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

Python while循环异常求助:一个正常运行,另一个陷入死循环

问题分析与解决

你的第二个oday循环无法跳出的原因有三个明显错误:

  • 变量更新错误:循环内输入新值时,你把输入赋值给了day变量,但循环判断的是oday,导致oday永远是最初的输入值,不会被更新,循环无法终止。
  • 判断条件错误:int(oday) not in (1,31)这个条件只会检查输入是否是1或31,而不是1到31的范围,即使输入合法日期(比如15)也会被判定为无效。
  • 提示文本错误:循环内的输入提示写错了,仍然是请求输入月份,应该改为请求输入日期。

修正后的代码

omonth = int(input('Digite o mês do seu nascimento: '))
while True:
    if omonth not in range(1, 13):  # 用range更准确表示1-12的范围
        omonth = int(input('Digite o mês do seu nascimento: '))
    else:
        break

oday = int(input('Digite o dia do seu nascimento: '))
while True:
    if not (1 <= oday <= 31):  # 直接用范围判断更直观
        oday = int(input('Digite o dia do seu nascimento: '))
    else:
        break

关键修正点说明

  1. 把循环内的day = ...改为oday = ...,确保判断的变量能被更新。
  2. 把判断条件改成1 <= oday <=31(或oday in range(1,32)),覆盖1到31的所有合法日期值。
  3. 修正循环内的输入提示文本,和初始输入保持一致。

另外,第一个循环的(1,12)也可以改成range(1,13),这样更准确表示1到12的月份范围,避免只判断1和12的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:17:06