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()
无论如何。然后您可以删除“重试”