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

为何if any(int) == any(d)判断逻辑不生效?Python新手求助

问题分析与解决

首先你误解了any()函数的用法:

  • any(iterable)的作用是判断可迭代对象中是否存在至少一个为真的元素。非空字符串在Python里视为True,所以any(int)永远返回True(因为你的int列表里全是非空数字字符串);而只要用户输入非空内容,any(d)也会返回True。这就导致any(int) == any(d)永远是True == True,所以不管输入有没有数字,都会触发错误提示。

正确的判断方式

你需要检查输入的每个字符是否存在于数字列表中,应该用any(char in int for char in d),这个表达式会遍历输入的每个字符,只要有一个字符在数字列表里,就返回True。

修改后的代码:

a = 0

digits = ["1","2","3","4","5","6","7","8","9","0"]  # 别用int当变量名,会覆盖内置类型

while a == 0:
    print("Please choose any word by typing it here:")
    d = input()
    d_list = list(d)
    print(d_list)
    if any(char in digits for char in d_list):
        print("Invalid input. Please choose a non-number with no spaces or special characters.")

额外提醒:不要用int作为变量名,这会覆盖Python的内置int类型,可能导致后续奇怪的错误,改成digits这类语义明确的名字更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:36:22