为什么这个Python循环有效——字符串不能小于整数



我是python的新手,我正在为每个人学习关于python的免费课程。在课程中,他们给了我们一个问题:

以下是从值列表中查找最小值的代码。其中一行出现错误,将导致代码无法按预期工作。是哪一行?:

smallest = None
print("Before:", smallest)
for itervar in [3, 41, 12, 9, 74, 15]:
if smallest is None or itervar < smallest:
smallest = itervar
break
print("Loop:", itervar, smallest)
print("Smallest:", smallest)

答案是第6行。我很困惑为什么第3行没有答案?最小=无,但无是一个字符串。代码不会因为3<没有一个是行不通的?(在itervar<最小(部分。

非常感谢!

None不是字符串。这是一种特殊的价值,意味着缺乏有意义的价值。

但你是对的,你不能比较字符串和整数,或者None和整数。

然而,这种情况永远不会发生,因为or短路:如果你有A or B,而A为真,那么B永远不会被求值。所以如果是smallest is None,那么它不会将其与itervar进行比较,这一切都很好。

"无";不是字符串。它规定";最小的";当前没有值,类似于为空。if条件的第一部分(small为None(在第一次迭代中仅为true一次。然后设置";最小的";至";itervar";(3,在这种情况下,它是列表中的第一个数字(之后,由于"0",循环立即停止;中断";语句并移到第8行;最小:3〃;。所以break语句就是问题所在,这就形成了第6行的答案。

None不是字符串,它是一个python关键字,在python中引用了no值None
而且不,它不会中断
这是因为首先检查第一个条件。如果是smallest=None,由于它是or块,则不会检查第二个条件,因此循环工作
只有当第一个条件是False时,才会检查条件itervar < smallest

最新更新