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

Python中如何通过按下ENTER键退出input输入校验的while循环

问题根因

ENTER键触发input()返回的结果确实是空字符串"",无法退出循环的问题出在你的校验逻辑写法上:
你写的any(x in tfend.keys() for x in tf_end)是遍历输入字符串的每个单个字符去匹配字典键,当输入为空字符串时,遍历没有可迭代的元素,any()对空迭代器会直接返回False,因此not False的判断结果为真,循环会持续运行。

另外额外说明:input()本身返回的就是字符串类型,不需要额外套str()做转换,属于冗余代码可以删除。

修复方案

你要的是整个输入内容匹配字典键的校验逻辑,不需要遍历每个字符,直接修改循环判断条件即可:

tf_end = input("TF end: ")
tfend = {"":7,'1':0,'2':1,'3':2,'5':3,'10':4,'15':5,'30':6,'1h':7}
# 直接判断整个输入是否在字典键中即可
while tf_end not in tfend:
      tf_end = input("TF end: ")

修改后按下ENTER返回空字符串"",会直接匹配到字典中的""键,判断为假直接退出循环,符合你的预期。

特殊场景兼容(可选)

如果你确实需要保留「输入内容包含任意一个字典键即可通过校验」的逻辑,只需要在判断条件中额外加空字符串的匹配分支即可:

while not (tf_end == "" or any(x in tfend.keys() for x in tf_end)):
      tf_end = input("TF end: ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:15:03