【发布时间】:2021-05-18 15:37:09
【问题描述】:
我遇到了一个允许用户输入水果名称的代码。根据输入,从篮子列表中搜索,如果水果在列表中,则显示其数量。
如果没有找到水果,用户可以输入该水果的数量并将其添加到列表中。
basket = [
{'fruit': 'apple', 'qty': 20},
{'fruit': 'banana', 'qty': 30},
{'fruit': 'orange', 'qty': 10}
]
fruit = input('Enter a fruit:')
index = 0
found_it = False
while index < len(basket):
item = basket[index]
# check the fruit name
if item['fruit'] == fruit:
found_it = True
print(f"Basket has {item['qty']} {item['fruit']}(s)")
break
index += 1
if not found_it:
qty = int(input(f'Enter the qty for {fruit}:'))
basket.append({'fruit': fruit, 'qty': qty})
print(basket)
但我不明白外部 if 条件的逻辑。它指的是哪个found_it?在(全局)while 语句之前定义的一个还是在其中定义的一个(本地)?外部if 是如何工作的?
【问题讨论】:
-
这里的全局/本地范围没有变化。本地
found_it变量最初设置为False,然后如果在while 循环中找到匹配项,则设置为True。这样,当循环结束时,如果在列表中没有找到水果,它只会运行最后的代码。 -
你的代码只有一个变量'found_it',你的循环有条件地修改它。 if语句用于检查是否在循环的迭代过程中被修改。
-
哦,这背后的逻辑是,如果我键入“python”,while 语句会遍历列表直到
index>=len(basket)并呈现while 条件False。然后它退出 while 循环而不中断。此时,found_it仍然是第一次分配的False,因为在水果篮中找不到“python”,因此在 while 循环中没有修改found_it。因此,执行外部 if 语句,因为False不是True。这是正确的吗?
标签: python for-loop while-loop global-variables local-variables