通过结合使用If语句和列表,对列表中特定的值做特殊的处理,高效的管理不断变化的情形,证明代码在各种情况下都将按预期那样运行。
5.4.1检查特殊元素
下面进一步研究如何检查列表中的特殊元素,并对其做合适的处理。
requested toppings = [ ' mushrooms' , 'green peppers,'extra cheese' ]
for requested topping in requested toppings:
print(f"Adding {requested_ topping}.")
print("\nFinished making your pizza!")
输出很简单,因为上述代码不过是一个简单的for循环:
Adding mushrooms.
Adding green peppers.
Adding extra cheese.
Finished making your pizza!
然而,如果比萨店的青椒用完了,该如何处理呢?为安善地处理这种情况,可包含一条if语句:
requested_ toppings = ['mushrooms ','green peppers',extra cheese' ]
for requested topping in requested_ toppings:
if requested topping == ' green peppers':
print("Sory, we are out of green peppers right now.")
else:
print(f"Adding {requested. topping}.")
print("\nFinished making your pizza!")
输出:Adding mushrooms.
Sorry, we are out of green peppers right now.
Adding extra cheese.
5.4.2确定列表不是空的
到目前为止,我们对于处理的每个列表都做了一个简单的假设--------假设它们都至少包含一一个元素。因为马上就要让用户来提供存储在列表中的信息,所以不能再假设循环运行时列表不是空的。有鉴于此,在运行for循环前确定列表是否为空很重要。
下面在制作比萨前检查顾客点的配料列表是否为空。如果列表为空,就向顾客确认是否要点原味比萨;如果列表不为空,就像前面的示例那样制作比萨:
equested toppings = []
if requested toppings:
for requested_ topping in requested toppings:
print(f"Adding {requested topping}." )
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")
首先创建个空列表,其中不包含任何配料。进行简单的检查,面不是直接执行for循环。在if语句中将列表名用作条件表达式时,Pytor将在列表至少包含一个元素时返回Tue,并在列表为空时返回false如果rpested tpis不为空,就运行与前个不相同的r循环;否则,就打印条消息, 询问顾客是否确实要点不加任何配料的原味比萨.
输出:Are you sure you want a plain pizza?
如果这个列表不为空,输出将显示在比萨中添加的各种配料。