s $" + str(price) + ".") #我在考虑,如何结果让用户自己输入名字,在编程中,我们程序员自己肯定知道如何调用函数,但是用户不知道 your_age(18) your_age(10) your_age(2)
#年龄的问题可以结果,我们直接重新定义一个年龄变量,让用户输入即可,但是如何解决自动调用函数的问题,不可能让用户自己调用函数 my_age = int(input("Please input your age: ")) your_age(my_age) 这些代码大都未变。第二个elif代码块通过检查确定年龄不到65岁后,才将门票价格设置为全票价格——10美元。请注意,在else代码块中,必须将所赋 的值改为5,因为仅当年龄超过65(含)时,才会执行这个代码块。
5.3.5 省略else代码块 Python并不要求if-elif结构后面必须有else代码块。在有些情况下,else代码块很有用;而在其他一些情况下,使用一条elif语句来处理特定的情形更 清晰: elif代码块在顾客的年龄超过65(含)时,将价格设置为5美元,这笔使用else代码块更清晰些。经过这样的修改后,每个代码块都仅在通过了相应的测试时 才会执行。 else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试的条 件,应考虑使用一个elif代码块代替else。这样,我们就可以肯定,仅当满足相应的条件时,我们的代码才会执行。
5.3.6 测试多个条件 if-elif-else结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了测试后,Python就跳过余下的测试。这种行为很好,效率很高,让我 们能够测试一个特定的条件。 然而,有时候必须检查我们关心的所有条件。在这种情况下,应使用一系列不包含elif和else代码块的简单if语句。有可能有多个条件为True,且我们需要 在每个条件为True时都采取相应措施时,适合使用这种方法。 toppings.py
requested_toppings = ['mushrooms','extra cheese']
if 'mushrooms' in requested_toppings: print("Adding mushrooms.") if 'pepperoni' in requested_toppings: print("Adding pepperoni") if 'extra cheese' in requested_toppings: print("Adding extra cheese") print('\nFinished making your pizza!') 我们首先创建了一个列表,其中包含顾客点的配料。if语句检查顾客是否点了配料蘑菇('mushrooms').如果点了,就打印一条确认消息。检查配料腊香肠 ('pepperoni'),这个程序不管前一个测试是否通过,都将进行下一个测试。每当这个程序运行时,都会进行这三个独立的测试。 在这个示例中,会检查每个条件,因此将在披萨中添加蘑菇并多加芝士: Adding mushrooms. Adding extra cheese
Finished making your pizza! 如果像下面这样转而使用if-elif-else结构,代码将不能正确地运行,因为有一个测试通过后,就会跳过余下的测试:
requested_toppings = ['mushrooms','extra cheese']
if 'mushrooms' in requested_toppings: print("Adding mushrooms.") elif 'pepperoni' in requested_toppings: print("Adding pepperoni") elif 'extra cheese' in requested_toppings: print("Adding extra cheese")
print('\nFinished making your pizza!') 第一个测试检查列表中是否包含'mushrooms',它通过了,因此将在比萨中添加蘑菇。然而,Python将跳过if-elif-else结构中余下的测试,不在检查列 表中是否包含'extra cheese'和'pepperoni'.其结果是,将添加顾客点的第一种配料,但不会添加其他的配料: Adding mushrooms.
Finished making your pizza! 总之,如果我们只想之星一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。
动手试一试 5-3 alien_color = 'yellow'
if alien_color == 'yellow': print("You get 5 score.")
if alien_color != 'yellow': print("The other color.") 5-4 alien_color = 'red'
if alien_color == 'yellow': score = 5 else: score = 10 print("You get " + str(score) + " score.")
5.4 使用if语句处理列表 通过结合使用if语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效地管理不断变化的情形,如餐馆是否还有特定的食材;证明代码 在各种情形下都能按预期那样运行。
5.4.1 检查特殊元素 本章开头通过一个简单示例演示了如何处理特殊值'bmw'——它需要采取不同的格式进行打印。既然我们对条件测试和if语句有了大致的认识,下面来进一 步研究如何检查列表中的特殊值,并对其做合适的处理。 继续使用前面的比萨店示例。这家比萨店在制作比萨时,每添加一种配料都打印一条消息。通过创建一个列表,在其中包含顾客点的配料,并使用一个循环 来指出添加到比萨中的配料,可以以极高的效率编写这样的代码:
requested_toppings = ['mushrooms','extra cheese','pepperoni']
for requested_topping in requested_toppings: print("Adding " + requested_topping + '.')
print("\nFinished making your pizza.") 输出很简单,因为上述代码不过是一个简单的for循环: Adding mushrooms. Adding extra cheese. Adding pepperoni.
Finished making your pizza. 然而,如果比萨店的青椒用完了,该如何处理呢?为妥善地处理这种情况,可在for循环中包含一条if语句:
requested_toppings = ['mushrooms','extra cheese','pepperoni']
for requested_topping in requested_toppings: #加入if条件进行判断,如果 |