Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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中使用布尔变量作为if条件_Python_If Statement_Boolean - Fatal编程技术网

如何在Python中使用布尔变量作为if条件

如何在Python中使用布尔变量作为if条件,python,if-statement,boolean,Python,If Statement,Boolean,我对以下代码感到困惑: 定义此findmin函数以查找列表中的最小数字O(n^2) 我不明白:为什么作者在第一个for循环下面设置“issmallest=True”?通常当我们想使用类似这种情况的布尔值时(例如在代码开头将布尔值指定给变量,或将布尔值作为if语句条件)?谢谢 while的条件必须始终计算为布尔值。如果计算结果为true,则循环将继续,否则,将执行循环后的语句。请注意:您问题中的代码没有涉及while循环。这个代码非常糟糕,请忘记它,以及它附带的所有东西。对于学习,请尝试以下内容:

我对以下代码感到困惑:

定义此findmin函数以查找列表中的最小数字O(n^2)
我不明白:为什么作者在第一个for循环下面设置“issmallest=True”?通常当我们想使用类似这种情况的布尔值时(例如在代码开头将布尔值指定给变量,或将布尔值作为if语句条件)?谢谢

while的条件必须始终计算为布尔值。如果计算结果为true,则循环将继续,否则,将执行循环后的语句。请注意:您问题中的代码没有涉及while循环。这个代码非常糟糕,请忘记它,以及它附带的所有东西。对于学习,请尝试以下内容:。

好的,首先,要删除代码中的一些错误,可以使用以下示例:

def findMin(alist):
    overallmin=alist[0] 

    for i in alist:
        issmallest=True
        for j in alist:
            if i>j:
               issmallest=False
        if issmallest:
            overallmin = i
    return overallmin
此代码背后的思想是将列表中的所有元素与所有其他元素进行比较,并保留比所有其他元素都小的元素。因此,在循环中,假定当前元素是最小的
issmallest=True
,直到找到较小的元素为止。如果找到较小的值,issmallest的值将更改为False。因此,如果在与所有其他元素进行比较后,issmallest仍然是真的,那么元素确实是最小的,因此是固定不变的

您可以简化此代码,因为一旦找到最小的元素,就无需进一步比较,也就是说,您可以离开函数。此外,在该算法中,不需要为最小元素保留变量。相应的代码可能如下所示:

def findMin(alist): 
    for current_el in alist:
        issmallest = True
        for other_el in alist:
            if other_el < current_el:
               issmallest = False

        if issmallest:
            return current_el
def findMin(列表):
对于列表中的当前元素:
issmallest=True
对于列表中的其他内容:
如果其他电能<当前电能:
issmallest=False
如果是最小的:
返回电流
但是:即使对于初学者来说,这也不是一个找到最小值的好代码。我自己作为初学者也可以这么说。在一个元素在手的情况下浏览一次列表,在浏览时进行比较,并始终保留最小的元素,这样会更干净。 因此,即使是低成本,您也可以编写一个更快的算法,如下所示:

def findMin(alist): 
    smallest_el = alist.pop() # take out an element, no need to compare with itself
    for other_el in alist:
        if other_el < smallest_el:
            smallest_el = other_el

    return smallest_el
def findMin(列表):
最小的_el=alist.pop()#取出一个元素,无需与自身进行比较
对于列表中的其他内容:
如果其他元素<最小元素:
最小值=其他值
返回最小值

如果代码不好而且不起作用,我建议从更好的示例中学习。此外,它不包含
,而为True:
,尽管琐碎的研究会发现你的问题没有多大意义。你应该考虑简化它,你会问很多问题,可能会让自己困惑。至于1。为什么作者将issmallest设置为True。。这意味着假设值总是最小的,除非
i>j
def findMin(alist): 
    smallest_el = alist.pop() # take out an element, no need to compare with itself
    for other_el in alist:
        if other_el < smallest_el:
            smallest_el = other_el

    return smallest_el