Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 当我在第一个代码中将True改为False时,我的输出保持不变。这是为什么?_Python 3.x_Try Except - Fatal编程技术网

Python 3.x 当我在第一个代码中将True改为False时,我的输出保持不变。这是为什么?

Python 3.x 当我在第一个代码中将True改为False时,我的输出保持不变。这是为什么?,python-3.x,try-except,Python 3.x,Try Except,我的代码: liste = ["345","sadas","324a","14","zxc"] for i in liste: try: int(i) == True #(make it false for example) print(i) except: pass for i in liste: try: i = int(i) print(i) except:

我的代码:

liste = ["345","sadas","324a","14","zxc"]

for i in liste:
    try:
        int(i) == True  #(make it false for example)
        print(i)
    except:
        pass



for i in liste:
    try:
         i = int(i)
        print(i)
    except:
        pass
输出:

345

14
你可以看到这里有两种不同的代码,问题是只写数字而不是字母。(使用try-except)。但我的问题是,当我在第一个代码中将True改为False时,我的输出保持不变。这是为什么?

这是:

    int(i) == True  #(make it false for example)
首先尝试对
i
进行
int
,如果操作成功,则将其与
True
进行比较,然后丢弃测试结果。照此看来,整个比较结果都是不可操作的(从功能上讲,代码仍在执行),也可以用just替换

`int(i)`
当然,由于比较的结果被丢弃了,您可以针对任何与int(另一个int、一个float、一个bool等)可比的值进行测试,这绝对没有什么区别

作为旁注:这:

try:
   something()
except:
    pass
是纯粹的邪恶-它捕获所有内容(包括
SystemExit
)并忽略它。我知道这只是一个快速测试代码片段,但请帮自己一个忙,永远不要在实际代码中执行此操作-始终指定确切的异常您希望并可以在代码中处理这一点,如果您想忽略它们,至少将它们记录在某个地方,以便您知道代码中真正发生了什么

当我在第一个代码中将True改为False时,我的输出保持不变

因为你没有做任何事情,和其他人相比

if int(i) == True:
    print(i)
或者干脆

if int(i):
    print(i)
但是,更合适的做法是

if i.isdigit():
    print(i)

我想在这里猜测一下,但是如果
int(I)
应该抛出一个异常,如果
I
不是一个数字,那么它将这样做,不管你将结果与什么进行比较,
int(“sadas”)
将抛出一个异常,不管你是否比较结果(你没有得到这个异常)使用False或True。请检查您的缩进,这里它是错误的。
int(i)==True
是经过计算的,而不是经过测试的。您不是指
if int(i)==False:…
?无论如何,在本练习中,try except的概念正是为了避免使用“if”。您可能应该使用
i.isdigit()
无论如何。然后您可以删除“重试”