将变量设置为True或False有什么意义?

时间:2019-12-07 20:58:34

标签: python if-statement variables

我正在YouTube上观看有关Python基础知识的教程视频。 在视频过程中,如果有任何以字母“ J”开头的单词,他将创建一个列表并编写代码以打印出“找到”。 screenshot of code 这是代码:

names = ["John", "Mary"]
found = False
for name in names:
    if name.startswith("J"):
        print("Found")
        found = True
        break
if not found:
    print("Not found")

我的问题是,为什么他决定在代码开头将变量found设置为False,然后又将变量底部的变量更改为True

3 个答案:

答案 0 :(得分:4)

也许这样写会更清楚:

names = ["John", "Mary"]
found = False
for name in names:
    if name.startswith("J"):
        found = True
        break

if found:
    print("Found")
else:
    print("Not found")

这在功能上是相同的,但是found的作用应该更清楚。


尽管与@martineau commented一样,您甚至不需要found,因为Python有一个else子句,您可以将其添加到for循环中,该子句在循环为不间断:

names = ["John", "Mary"]
for name in names:
    if name.startswith("J"):
        print("Found")
        break
else:  # No break
    print("Not found")

或者这是另一个基于@Daniel's comment使用生成器表达式和三进制的选项:

names = ["John", "Mary"]
found = any(name.startswith("J") for name in names)
print("Found" if found else "Not found")

答案 1 :(得分:2)

在代码结尾,我们检查found的值。如果我们没有触发found = True语句,那么found将是False。否则,它将为True。这使我们能够确定是否找到至少一个以“ J”开头的名称。

如果我们一开始没有设置found = False,则以后将无法使用found-因为在到达{{1 }}会使用它的语句。

换句话说,if的值根据程序中发生的变化而变化,我们使用该变量来跟踪该变化。

答案 2 :(得分:1)

此布尔变量的使用在编程中称为“标记”:

  

最简单形式的标志变量是您定义为的变量   在某些条件为真之前具有一个值,在这种情况下,   变量的值。它是一个变量,您可以用来控制流量   函数或语句的名称,使您可以检查某些   功能进展时的状况。

程序员在代码的开头将变量设置为False,并且只有找到名称后,变量才会更改。 该变量仅用于在代码末尾检查是否必须执行最后一次打印。

在代码末尾,如果发现为True,则将执行打印“未找到”。

尝试想象一个找不到名称的情况...
可变值是多少?
是否执行最后的打印?

还有另外一种可能性,可以通过仔细地使用函数的返回值来获得不带布尔变量的相同结果(您将在以后学习函数):

let a = [1, 2, 3],
    b = [],
    c = 1
    
/*Check if a variable is an Array*/
console.log(a instanceof Array)
console.log(b instanceof Array)
console.log(c instanceof Array)

/*Check if array includes a certian value and return its index if avalable else returns -1*/
console.log(a.indexOf(2))
console.log(a.indexOf(3))
console.log(a.indexOf(5)) //[-1] Doesn't exist in the array
相关问题