Python中if语句使用不等于判断报ValueError错误问题咨询
问题原因分析
- 首先你的比较逻辑本身存在语法错误:你用
or连接三个不等判断,该条件永远为真。任意变量不可能同时等于'{'、','、'}'三个不同的字符,所以三个判断至少有两个成立,or连接后整个if条件始终触发,else分支永远不会执行。如果你确实需要排除这三个字符,应该把or改为and,或者更简洁的写法是if i not in {'{', ',', '}'}。 - 其次这段判断逻辑完全不符合你当前代码的运行场景:你定义的
c是Python原生的集合类型,遍历集合得到的元素本身就是1、2、3这类整数,根本不会出现'{'、','这类字符串符号,完全不需要做这类字符判断。 - 你贴的代码本身不会触发你提到的报错,如果你实际运行的代码里
c是类似"{1,2,3,4,5}"的字符串类型,那么遍历字符串得到的字符会包含括号、逗号,此时你的错误判断逻辑会让这些非数字字符进入int()转换分支,直接触发你收到的报错。
修正代码
场景1:c本身是集合类型
直接删除无用的字符判断即可:
c={1,2,3,4,5} LE=[] #to store even numbers LO=[] #to store odd numbers for i in c: if(i%2==0): LE.append(i) else: LO.append(i) print(LE) print(LO)
场景2:c是字符串格式的集合内容
只保留数字字符做处理即可:
c="{1,2,3,4,5}" LE=[] #to store even numbers LO=[] #to store odd numbers for i in c: if(i.isdigit()): num = int(i) if(num%2==0): LE.append(num) else: LO.append(num) print(LE) print(LO)
内容的提问来源于stack exchange,提问作者adf_hunter
相关产品推荐
相关产品推荐

