Python判断输入数字是否在列表中存在的逻辑异常问题排查
问题解决:输入数字与列表元素不匹配的问题
问题原因
你遇到的问题本质是类型不匹配:input()函数获取的用户输入是字符串类型(比如输入2得到的是字符串"2"),但你的列表a里存的是整数类型的数字(比如整数2)。这两个是不同类型的对象,所以判断"2" in [1,2,3,4,5,6]会返回False,自然就走到else分支了。
解决方案
这里有两种简单的修复方式:
方式一:把输入转换成整数
直接将用户输入的字符串转为整数类型,这样就能和列表里的整数匹配:
a = [1,2,3,4,5,6] print(a) # 将输入转为整数 s = int(input("Enter a number from the list given \n")) if s in a: print("the number given is", s) else: print("please select the number given in the list")
方式二:把列表元素转为字符串
如果不想转换输入类型,也可以把列表里的数字都改成字符串:
# 列表元素改为字符串 a = ["1","2","3","4","5","6"] print(a) s = input("Enter a number from the list given \n") if s in a: print("the number given is", s) else: print("please select the number given in the list")
额外优化(可选)
如果用方式一,要考虑用户输入非数字的情况(比如输入字母),这时候会触发ValueError,可以加个异常处理避免程序崩溃:
a = [1,2,3,4,5,6] print(a) try: s = int(input("Enter a number from the list given \n")) if s in a: print("the number given is", s) else: print("please select the number given in the list") except ValueError: print("请输入有效的数字")
内容的提问来源于stack exchange,提问作者mddd
相关产品推荐
相关产品推荐

