博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
if 语句
阅读量:6241 次
发布时间:2019-06-22

本文共 6460 字,大约阅读时间需要 21 分钟。

hot3.png

## if语句# 5.1  一个简单示例cars =['audi','bmw','subaru','toyota']for car in cars:    if car=='bmw':        print(car.upper())      #演示了如何使用if 语句来正确地处理特殊情形。假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,都应以首字母大写的    else:                      # 方式打印其名称,但对于汽车名'bmw' ,应以全大写的方式打印。下面的代码遍历一个列表,并以首字母大写的方式打印其中的汽车名,但对于汽车名'bmw' ,以全大写的方        print(car.title())     #  式打印#  5.2 条件测试## 每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。如果## 条件测试的值为True ,Python就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码。# 5.2.1 检查是否相等# 大多数条件测试都将一个变量的当前值同特定值进行比较。最简单的条件测试检查变量的值是否与特定值相等:car = 'bmw'  # 首先使用一个等号将car 的值设置为'bmw'car == 'bmw'  # 使用两个等号(== )检查car 的值是否为'bmw'# 5.2.2 检查是否相等时不考虑大小写car = 'Audi'car == 'audi'    # Python中检查是否相等时区分大小写,例如,两个大小写不同的值会被视为不相等:car = 'Audi'car.lower() == 'audi'    # 函数lower() 不会修改存储在变量car 中的值,将变量的值转换为小写,再进行比较# 5.2.3 检查是否不相等requested_topping = 'mushrooms'if requested_topping != 'anchovies':   # 将requested_topping 的值与'anchovies' 进行比较,如果它们不相等,Python将返回True ,进而执行紧跟在if 语句后面的代码;如果这两个值相   print("Hold the anchovies!")    # 等,Python将返回False ,因此不执行紧跟在if 语句后面的代码。# 5.2.4 比较数字age = 18age == 18   # 检查一个人是否是18岁# 条件语句中可包含各种数学比较,如小于、小于等于、大于、大于等于:age = 19age < 21Trueage <= 21Trueage > 21Falseage >= 21False#  5.2.5 检查多个条件# 你可能想同时检查多个条件,例如,有时候你需要在两个条件都为True 时才执行相应的操作,而有时候你只要求一个条件为True 时就执行相应的操作。在这些情况下,关键# 字and 和or 可助你一臂之力。# 1  andage_0 =22age_1=18age_0 >=21 and age_1>=21age1 =22age_0 >=21 and age1>=21# 2 or# 关键字or 也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or 的表达式才为False 。age_0 =22age_1 =18age_0 >= 21 or age_1 >=21# 5.2.6 检查特定值是否包含在列表中# 有时候,执行操作前必须检查列表是否包含特定的值。例如,结束用户的注册过程前,可能需要检查他提供的用户名是否已包含在用户名列表中。在地图程序中,可能需要检查# 用户提交的位置是否包含在已知位置列表中。# 要判断特定的值是否已包含在列表中,可使用关键字in 。来看你可能为比萨店编写的一些代码;这些代码首先创建一个列表,其中包含用户点的比萨配料,然后检查特定的配料# 是否包含在该列表中。>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']❶ >>> 'mushrooms' in requested_toppings    # 让Python检查列表requested_toppings 是否包含'mushrooms' 和'pepperoni'True❷ >>> 'pepperoni' in requested_toppingsFalse# 5.2.7 检查特定值是否不包含在列表中# 还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in 。例如,如果有一个列表,其中包含被禁止在论坛上发表评论的用户,就可在允许用# 户提交评论前检查他是否被禁言:banned_users = ['andrew', 'carolina', 'david']user = 'marie'❶ if user not in banned_users:print(user.title() + ", you can post a response if you wish.")# 5.2.8 布尔表达式# 随着你对编程的了解越来越深入,将遇到术语布尔表达式 ,它不过是条件测试的别名。与条件表达式一样,布尔表达式的结果要么为True ,要么为False# 5.3 if语句# 最简单的if 语句只有一个测试和一个操作:age =19if age >=18:    print('you are old enough to vote!')   # 在if 语句中,缩进的作用与for 循环中相同。如果测试通过了,将执行if 语句后面所有缩进的代码行,否则将忽略它们。# if -else 语句# 经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else 语句。if-else 语句块类似于简单的if 语句,但# 其中的else 语句让你能够指定条件测试未通过时要执行的操作。age =17if age >=18:    print('you are old enough to vote!')   # 如果❶处的条件测试通过了,就执行第一个缩进的print 语句块;如果测试结果为False ,就执行❷处的else 代码块。这次age 小于18,条件测试未通过,因此执行else 代else:                                          # 码块中的代码:    print("sorry,you are too young to vote")# 5.3.3 if-eilf-else结构# 经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过# 了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。age =4if age <=4:    print('不收费')elif age <=18:    print("收费5元")else:    print('收费10元')# 代码简洁age =77if age <=4:   price=0elif age <=18:    price=5else:    price=10print("收费"+str(price)+'元')# 5.3.4  使用多个elif代码块# 可根据需要使用任意数量的elif 代码块,例如,假设前述游乐场要给老年人打折,可再添加一个条件测试,判断顾客是否符合打折条件。下面假设对于65岁(含)以上的老# 人,可以半价(即5美元)购买门票:age =77if age <=4:   price=0elif age <=18:    price=5elif age>65:    price =5else:    price=10print("收费"+str(price)+'元')# 这些代码大都未变。第二个elif 代码块(见❶)通过检查确定年龄不到65岁后,才将门票价格设置为全票价格——10美元。请注意,在else 代码块(见❷)中,必须将所赋的# 值改为5,因为仅当年龄超过65(含)时,才会执行这个代码块。# 5.3.5 省略else代码块# Python并不要求if-elif 结构后面必须有else 代码块。在有些情况下,else 代码块很有用;而在其他一些情况下,使用一条elif 语句来处理特定的情形更清晰:age =19if age <=4:   price=0elif age <=18:    price=5elif age>=65:    price =5elif age<65:    price = 10print("收费"+str(price)+'元')# else 是一条包罗万象的语句,只要不满足任何if 或elif 中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用# 一个elif 代码块来代替else 代码块。这样,你就可以肯定,仅当满足相应的条件时,你的代码才会执行。# 5.3.6 测试多个条件# if-elif-else 结构功能强大,但仅适合用于只有一个条件满足的情况:遇到通过了的测试后,Python就跳过余下的测试。这种行为很好,效率很高,让你能够测试一个特定的# 条件。# 然而,有时候必须检查你关心的所有条件。在这种情况下,应使用一系列不包含elif 和else 代码块的简单if 语句。在可能有多个条件为True ,且你需要在每个条件为True# 时都采取相应措施时,适合使用这种方法。# 下面再来看前面的比萨店示例。如果顾客点了两种配料,就需要确保在其比萨中包含这些配料: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-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' 。其结果是,将添加顾客点的第一种配料,但不会添加其他的配料:# 总之,如果你只想执行一个代码块,就使用if-elif-else 结构;如果要运行多个代码块,就使用一系列独立的if 语句。# 5.4使用if语句处理列表#  通过结合使用if 语句和列表,可完成一些有趣的任务:对列表中特定的值做特殊处理;高效地管理不断变化的情形,如餐馆是否还有特定的食材;证明代码在各种情形下都将按#  预期那样运行。# 5.4.1 检查特殊元素requested_toppings=['mushrooms','green peppers','extra cheese']for requested_topping in requested_toppings:    if requested_topping=='green peppers':     # 这里在比萨中添加每种配料前都进行检查。❶处的代码检查顾客点的是否是青椒,如果是,就显示一条消息,指出不能点青椒的原因。❷处的else 代码块确保其他配料都将添        print('sorry')                          #  加到比萨中。    else:     print(requested_topping)# 5.4.2 确定列表不是空的# 对于处理的每个列表都做了一个简单的假设,即假设它们都至少包含一个元素。我们马上就要让用户来提供存储在列表中的信息,因此不能再假设循环运行时列表# 不是空的。有鉴于此,在运行for 循环前确定列表是否为空很重要。requested_toppings =[]if requested_toppings:     # 在❷处我们进行了简单检查,而不是直接执行for 循环。在if 语句中将列表名用在条件表达式中    print('sorry')        # 时,Python将在列表至少包含一个元素时返回True ,并在列表为空时返回False 。如果requested_toppings 不为空,就运行与前一个示例相同的for 循环;else:    print('pizza')# 5.4.3 使用多个列表available_toppongs=['mushrooms','olives','green peppers','pepperoni','pineapple','extra cheese']   # 我们定义了一个列表,其中包含比萨店供应的配料requested_toppings=['mushrooms','green peppers','extra cheese']    #创建了一个列表,其中包含顾客点的配料,请注意那个不同寻常的配料——'french fries'for requested_topping  in requested_toppings:  # 我们遍历顾客点的配料列表。在这个循环中,对于顾客点的每种配料,我们都检查它是否包   if requested_topping in available_toppongs:  #含在供应的配料列表中(见❹)    print('adding '+requested_topping)     # 如果答案是肯定的,就将其加入到比萨中,否则将运行else 代码块(见❺):打印一条消息,告诉顾客不供应这种配料。   else:    print('sorry')

转载于:https://my.oschina.net/u/3803395/blog/2907003

你可能感兴趣的文章
MySQL 面试基础
查看>>
利用GPU实现翻页效果
查看>>
C# 中的await
查看>>
java以流的形式输出文件
查看>>
『PyTorch』第十三弹_torch.nn.init参数初始化
查看>>
linux 查找目录下的文件内容并替换(批量)
查看>>
iphone遮住听筒/感应器/摄像头黑屏的解决办法
查看>>
python 抓取alexa数据
查看>>
UART、SPI和I2C详解
查看>>
兼容N多浏览器的CSS阴影效果
查看>>
Multiple arguments in Django template filters
查看>>
ARM11-Linux2.6-Button-Driver-Base-info
查看>>
抽屉Panel的研究
查看>>
In-App Purchase
查看>>
深圳it公司
查看>>
glog 使用中存在的问题
查看>>
WCF, the Service attribute value in the ServiceHost directive could not be found.
查看>>
Scriptcase价格调整(五折销售)
查看>>
【转】 编写C#调用的C++DLL
查看>>
Programming Concepts
查看>>