当我在第一个代码中将 True 更改为 False 时,我的输出保持 same.Why 是吗?
When i change True to False in the first code my output stays same.Why is that?
我的代码:
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 时,我的输出保持 same.Why 是吗?
这个:
int(i) == True #(make it false for example)
首先尝试做一个i
的int
,如果操作成功,则与True
比较,然后丢弃测试结果。 IOW,整个比较最终成为空操作((从功能上讲 - 代码仍在执行),并且也可以仅替换为
`int(i)`
当然,由于比较的结果被丢弃,您可以只针对与 int(另一个 int、float、bool 等)可比较的任何值进行测试,这绝对没有区别。
作为旁注:这个:
try:
something()
except:
pass
是纯粹的邪恶——它捕获所有东西(包括 SystemExit
)并忽略它。我知道这只是一个快速测试代码片段,但请帮个忙,永远不会在实际代码中这样做 - 始终指定您期望并在此时可以处理的确切异常在代码中,如果您想忽略它们,至少 将它们记录在某处,这样您就知道真正在您的代码中发生了什么。
when i change True to False in the first code my output stays same
因为与
相比,您没有对该结果执行任何操作
if int(i) == True:
print(i)
或者干脆
if int(i):
print(i)
但是,更合适的是
if i.isdigit():
print(i)
我的代码:
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 时,我的输出保持 same.Why 是吗?
这个:
int(i) == True #(make it false for example)
首先尝试做一个i
的int
,如果操作成功,则与True
比较,然后丢弃测试结果。 IOW,整个比较最终成为空操作((从功能上讲 - 代码仍在执行),并且也可以仅替换为
`int(i)`
当然,由于比较的结果被丢弃,您可以只针对与 int(另一个 int、float、bool 等)可比较的任何值进行测试,这绝对没有区别。
作为旁注:这个:
try:
something()
except:
pass
是纯粹的邪恶——它捕获所有东西(包括 SystemExit
)并忽略它。我知道这只是一个快速测试代码片段,但请帮个忙,永远不会在实际代码中这样做 - 始终指定您期望并在此时可以处理的确切异常在代码中,如果您想忽略它们,至少 将它们记录在某处,这样您就知道真正在您的代码中发生了什么。
when i change True to False in the first code my output stays same
因为与
相比,您没有对该结果执行任何操作if int(i) == True:
print(i)
或者干脆
if int(i):
print(i)
但是,更合适的是
if i.isdigit():
print(i)