为何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
相关产品推荐
相关产品推荐

