python代码学习——if 判断语句

if判断

若要学习if判断语句,首先要知道什么时运算符,因为if语句是判断语句,后面要跟判断条件

1运算符

运算符分为:算数运算符,赋值运算符,比较运算符,逻辑运算符和成员运算符,位运算符,身份运算符,以下对各种运算符进行一一讲解

运算符的优先级为:算数运算符>位运算符>身份运算符>成员运算符>逻辑运算符>赋值运算符

算数运算符

算数运算符分为加、减、乘、除、模、整除,幂

  • a+b 加法
  • a-b 减法
  • a*b 乘法
  • a/b 除法,除法如果不能除尽,则显示的结果为浮点数,如果想要整数可使用int函数来强制转换
  • a//b 整除,得到的结果为整数,不遵循四舍五入的规则
  • a%b (模:取余):常用于判断奇数,偶数
  • ab(幂运算或者开房运算,如果是幂运算,则为大于0的整数,若为开放运算,则为小于1的小数,例如:30.5的意思为,根号三)

例如以下代码

a = 3
b = 2
s='''加{0}:减{1}:乘{2}:
除{3}:整除{4}:模{5}:幂{6}:'''.format(
a+b,a-b,a*b,a/b,a//b,a%b,a**b)
print(s)
print("===================")
a = 2
b = 3
s='''加{0}:减{1}:乘{2}:
除{3}:整除{4}:模{5}:幂{6}:'''.format(
a+b,a-b,a*b,a/b,a//b,a%b,a**b)

在这里插入图片描述

赋值运算符

赋值运算符分为等于(=),加等于(+=),减等于(-=)

  • a=b 的意思就是a=b
  • a+=b 的意思是 a=a+b
  • a-=b 的意思是a=a-b

例如以下代码:

a=5
b=5
a+=10  #a=a+10
b-=4   #b=b-4
print("加等于的结果是{},减等于的结果是{}".format(a,b))

在这里插入图片描述

比较运算符

比较运算符分为 > (大于)、<(小于)、 >=(大于等于) 、<=(小于等于)、 !=(不等于)、 ==(恒等于),其运算结果为:布尔值(True 和 False)
例如:以下代码,注意:“=”与“ ==”不是一个意思,一个在于赋值(=)每一个在于判断(==

a=5
b=10
print("a是否恒等于b?答:{}".format(a==b))
print("a是否恒小于等于b?答:{}".format(a<=b))
print("a是否恒大于等于b?答:{}".format(a>=b))
print("a是否恒不等于b?答:{}".format(a!=b))
print("a是否恒小于b?答:{}".format(a<b))
print("a是否恒大于b?答:{}".format(a>b))

在这里插入图片描述

逻辑运算符

逻辑运算符有:或(or)、与(and)、非(not),其运算结果为布尔值(true和false),注意:真真为真(and),假假为假(or)。非一般与成员运算符(in)来结合使用
代码示例如下:

a=5
b=-6
print(a>0 and b>0)
print(a>0 and b<0)
print(a>0 or b>0)
print(a>0 or b<0)

在这里插入图片描述

运行顺序
  • and和or的运算,从前向后按顺序计算,当True结果遇到or就停止,返回True;当False结果遇到and就停止,返回False;False遇到or,继续走;True遇到and,继续走。
>>> 3 > 2 and 9 > 2 or 7< 9 and 2 < 10    # (3 > 2 and 9 > 2)是True,遇到or后就会直接返回True,or后的表达式不再执行
True

>>> 3 > 2 and 2 < 5 or 7< 9 and 2 < 10    # (3 > 2 and 2 > 5)是False,遇到or后就会继续向下执行,or后的表达式为True,返回True
True

>>> 3 < 2 or 2 > 5 and 7< 9 and 2 < 10    # (3 < 2 or 2 > 5)是False,遇到and后就会直接返回False,and后的表达式不再执行
False

>>> 3 < 2 or 2 < 5 and 7< 9 or 2 < 10 and 10 > 1    # (3 < 2 or 2 < 5)是True,遇到and后就会继续向下执行,遇到or返回True,or后表达式为True,遇到and,继续执行,and后为True,最终返回True
True

短路运算符

总结起来就两句话:

  • and 如果第一个表达式的结果为False,后面就没有必要计算了,这个逻辑表达式的结果一定是False
  • or 如果第一个表达式的结果为True,后面就没有必要计算了,这个逻辑表达式的结果你一定是True

成员运算符

成员运算符有:in/not in 元素范围,在/不在范围内,其返回值也是布尔类型

  • 成员运算符的判断是:元素 in/not in 范围,元素在/不在范围里面
  • 如果范围类型是列表,列表中可存在任一类型的元素,可使用下标判断元素在列表中是否存在,如果列表中包含元组或者字典,可使用嵌套方式来判断
  • 如果范围类型是字典,如果要判断字段中的value,需要使用字典名.value函数,因为字典的默认是判断key是否存在

其示例代码如下:

item_str = 'python'
item_list = [1,3,'python',[2.34,5,7],{"name":"yezi","class":"0017"}]
item_dict = {"sex":"gril","code":"200","url":"www.baidu.com"}
print("th 在字符串中吗?","th" in item_str ,"ll在字符串中吗?", 'll' not in item_str)
print("3 在列表中吗?",3 in item_list ," 2.34 在嵌套列表中吗?", 34 not in item_list[3]," yezi 是嵌套字典的值吗?", "yezi" not in item_list[4].values())
print("sex 是嵌套字典的键吗?","sex" in item_dict ,"200 是字典的值吗?", "200"  in item_dict)

在这里插入图片描述

位运算符

& 位与
| 位或
~ 取反
^ 异或
<< 向左的位移
>> 向右的位移
  • 以上符号作用于数值转换为二进制数字
  • 例如:32//4 可以写成32>>2 后面的这个是将32转换为二进制之后,向右移动两位
  • 位运算符的计算方式,相见“java自学——类型转换”

身份运算符

  • is 是
  • is not 不是

问: is和==有什么区别
答:is需要判断内存地址,==只是判断两边数值的大小

空值判断

  • 当if或者while后面,跟**0,空字符串“”,空字典{},空元组(),空列表[]**时,可以直接进行逻辑判断,其结果为False
  • 当其信息为1,非空的字典、元组,列表,字符串时,其逻辑判断的结果为True,也可以说是字典、元组,列表,字符串是否存在

2.if判断语句

  • 控制语句:条件语句 循环语句
  • 条件语句:根据不同的条件,对不同的情况 做出不同的处理
  • if 关键字,注意不能用于命名
  • 必须掌握的,看到冒号就要知道:要换行,要缩进 注意重点
  • if 条件表达式:条件语句后面的值都是布尔值,其可以是比较运算符/成员运算符/逻辑运算符
  • if后面的表达式的值为True 才会执行下面的子语句
  • 如果存在多个判断,可使用if——elif——else来编写程序,elif后面和if一样,必须加条件
  • 所有为空的数据,为0的数据放在if后面,就会判断为False,所有非空的数据/非0的数据放在if后面就会自动的判断为True
  • 从上到下执行代码的过程中,如果判断中的某一个条件已经为真,执行了子语句,其他判断条件下的子语句就不会执行了
    例如:以下代码 :
count = 100
if count > 100  or  count  == 100: # 比较运算符  逻辑运算符
    print( "count 大于等于100" )

sun_str = "sun"
if "s" in sun_str:  #成员运算符
    print( " s 在字符串里面 " )

注意:所有为空的数据,为0的数据放在if后面,就会判断为False,所有非空的数据/非0的数据放在if后面就会自动的判断为True

i = []
j = 'python'
if i:
    print("True")
else:
    print("False")
if j:
    print("True")
else:
    print("False")

在这里插入图片描述

如果存在多个判断,可使用if——elif——else来编写程序。
1.如果一个条件解决不了,可以存在多个elif。elif后面和if一样,必须加条件;
2. else后面不能加任何条件,只能跟冒号
3. 每个if语句中,else可以不存在,但是如果else存在的话,else只能有一个

item_list = [2.5,7,10,'python']
if 15 in item_list:
    print("True")
elif 'p' in item_list[3]:
    print("p在python中")
else:
    print("false")

在这里插入图片描述

if的例题

例题1:一家商场正在降价促销,如果购买50-100原(包含50元和100元)之间,会给10%的折扣,如果购买金额大于100元会给20%的折扣,编写一个程序,询问购买价格,在现实折扣(10%或者20%)和最终价格。

#答案如下:
money = int(input("请输入购买价格:"))#使用input获取数据,因为从控制台获取为字符串,所以强制转换int型
if 50<= money <=100:
    print("您所需要付款的金额是:{},您享受的折扣是10%".format(money*(1-0.1)))
elif money >100:
    print("您所需要付款的金额是:{},您享受的折扣是20%".format(money*(1-0.2)))
else:
    print("您所需要付款的金额是:{},您不能享受折扣".format(money))

在这里插入图片描述
例题2:有一个字典: {“广东”:[“深圳”,“广州”,“阳江”], “湖南”:[“长沙”,“益阳”,“怀化”], “湖北”:[“武汉”,“襄阳”,“黄冈”]},若你从控制台输入一个省份,根据你的省份判断 你可以选择哪些城市。 当你选择完毕后,就打印一个信息到控制台,告诉你,你选择了XX省份XX城市 。如果省份不存在 或者是城市不存在 那么就告诉你 你输入错误 终止程序

#答案如下:
city_dict = {"广东":["深圳","广州","阳江"], "湖南":["长沙","益阳","怀化"], "湖北":["武汉","襄阳","黄冈"]}  #字典赋值
shengfen = input("请输入一个省份:")  #input函数,从控制台获取输入的省份信息,赋值给变量
if shengfen in city_dict.keys():  #判断省份是字典的key
    city_list = city_dict[shengfen]  #如果是,输入字典的值,列表
    city = input("请输入一个城市") #input函数,从控制台获取输入的城市信息,赋值给变量
    if  city in city_list:  #判断省份是列表的值
        print("您选择的是{}省{}市".format(shengfen,city))  #如果是,输出省份和城市信息
    else:  #如果不是,输出程序结束
        print("您输入错误,终止程序")
else:#如果省份不是字典的key输出程序结束
    print("您输入错误,终止程序")

在这里插入图片描述
思路:
第一步:因为要从输入城市,所以使用input函数,获取信息后复制给变量
第二步:判断省份在字典的key中是否存在,如果存在,使用input函数获取城市,如果不存在,给出省份不存在的提示信息
第三步:判断城市在字典的所选省份的value(注意value为列表)中是否存在,如果存在,输出选择的是哪个省,哪个市,如果不存在给出城市不存在的提示信息

if 的简写形式

  • 使用if语句,在条件比较简单的情况下,可以使用简写形式,简写代码的格式:
条件为真的执行语句 ifelse 条件为假的执行语句
  • 例子
data_1 = int(input("请输入一个数:"))
data_2 = int(input("请输入第二个数:"))
if data_1 >data_2:
    print(data_2,data_1)
else:
    print(data_1,data_2) 

等同于:
data_1 = int(input("请输入一个数:"))
data_2 = int(input("请输入第二个数:"))
print(data_2,data_1) if data_1 >data_2 else print(data_1,data_2)
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值