02 算数运算符、if判断

基本运算符

1、算术运算符

python支持的算术运算符与数学上计算的符号使用是一致的

salary = 3.3

res = salary * 12

  
print(10 + 1)   # 加法

print(10 - 3)   # 减法

print(10 * 3)   # 乘法

print(10 / 3)   # 除法,得到的返回值会保留整数与小数部分

print(10 // 3)  # 取整除,得到的返回值只保留整数部分(地板除)

print(10 % 3)   # 取余数,相除后只返回余数

print(10 ** 3)  # 幂,10的3次方

 

print(10 + 3.1)

print(10 % 3)
# ps:整型和浮点型可以混着计算<数字类型>

2、比较运算符

比较运算用来对两个值进行比较,返回的是布尔值True或False

== 等于,两个对象相等返回True,否则返回False

!= 感叹号等于,两个对象相等返回False,否则返回True

> 大于

>= 大于等于

< 小于

<= 小于等于

x = 10

y = 10.0

print(x == y)  #整型和浮点型比较

# True



m = 10     # 整型

n = "10"   # 字符串类型 

print(m == n) #仅限同类型

# False



print(10 == [1,2,3]) # == 不限类型

# False

print(10 + [1,2,3]) # 报错



print(10 == [1,2,3])

# False

print(10 != [1,2,3])

# True


print(10 > 3.1)

print(10 >= 3.1)

print(10 <= 3.1)

print(10 < 3.1)

3、赋值运算符

python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、

解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简

增量赋值

= 简单赋值运算

+= 加法赋值运算

-= 减法赋值运算

*= 乘法赋值运算

/= 除法赋值运算

//= 取整赋值运算

%= 取余赋值运算

**= 幂赋值运算

age = 18   # 简单赋值运算

 

age += 10 # age = age + 10 # 加法赋值运算

print(age)

# 28


age *= 10 # 乘法赋值运算

print(age)

# 180


age %= 3 # age = age % 3 # 取余赋值运算

print(age)

# 0
      

链式赋值

如果我们想把同一个值同时赋值给多个变量名,可以这么做

x = 10

y=x

z=y

链式赋值指的是可以用一行代码搞定这件事

x=y=z=10

print(x,y,z)

print(id(x),id(y),id(z))

交叉赋值

我们定义两个变量m与n

如果我们将m与n的值交换过来

m=10

n=20

temp=n
n=m
m=temp
m,n=n,m

print(m,n)

交叉赋值指的是一行代码可以搞定这件事

解压赋值

如果我们想把列表中的多个值取出来一次赋值给多个变量名,可以这么做

salaries=[11,22,33,44,55,66,77]

mon1=salaries[0]

mon2=salaries[1]

mon3=salaries[2]

mon4=salaries[3]

mon5=salaries[4]

mon6=salaries[5]

mon7=salaries[6]

mon1,mon2,mon3,mon4,mon5,mon6,mon7=salaries

# 变量名变少了

mon1,mon2,mon3,mon4,mon5,mon6,=salaries # 错误

# 变量名变多了

mon1,mon2,mon3,mon4,mon5,mon6,mon7,mon8=salaries # 错误

# 如果只想取头尾的几个值,可以用*_匹配

mon1,mon2,mon3,*_=salaries

print(mon1)

print(mon2)

print(mon3)

print(_)

# 取倒数两个值

*_,last2,last1=salaries

print(last1)

print(last2)

print(_)

# 取前一个以及后两个值

mon1,*_,last2,last1=salaries

print(mon1)

print(last1)

print(last2)

# 如果想取中间的值,*加middle

_,*middle,_=salaries

print(middle)

print(_)
 

# _同样的数值代替以最新的冲掉原值,所以_显示的是77

4、逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False

  • not: 将紧跟其后的那个条件取反,not优先级最高

print(not 10 > 3)

# False
  • and: 连接左右两个条件,只有两个条件同时为True,最终结果才为True

print("jack" == "jack" and 10 > 3)
# True

print("jack" == "Jack" and 10 > 3)
# False
  • or: 连接左右两个条件,但凡有一个条件为True,最终结果就为True

print("jack" == "jack" or 10 > 3)
# Ture

print("jack" == "Jack" or 10 > 3)
# Ture

优先级:not>and>or

  • ① 三者的优先级关系:not>and>or,同一优先级默认从左往右计算。

3>4 and 4>3 or not 1 == 3 and 'x' == 'x' or 3 >3

print(3>4 and 4>3 or not 1==3 and 'x' == 'x' or 3 >3)

(3>4 and 4>3) or (not 1==3 and 'x' == 'x') or 3 >3

# True
  • ② 最好使用括号来区别优先级,其实意义与上面一样

    • 原理为:
      • (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
      • (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
      • (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运
print(1 != 1 or 3 > 4 and not "xx" == "jack" or 1 > 10 and 9 > 3 and 1 > 0)

1 != 1 or (3 > 4 and not "xx" == "jack") or ((1 > 10 and 9 > 3) and 1 > 0)

# False
  • ③ 短路运算:偷懒原则(能少算就尽量少算)

    • 逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
print(1 > 0 and 1 != 1 and 3 > 2)

# False

print(1 > 0 or 1 != 1 or 3 > 2)

# True

补充了解:布尔值分为两大类

  • 1、显式的布尔值:能明确地得到True或False,比如x=True,10 > 3, 10 > 3 and 1==1

例如:

3 == 1 and True and 10 > 3

print(3 == 1 and True and 10 > 3)

# False
  • 2、隐式的布尔值:所有的数据类型的值都可以当作隐式的布尔值,其中0、None、空对应隐式布尔值为False,其余对应隐式布尔值为True
10 and 3 and 4 > 2

print(10 and 3 and 4 > 2)

# True

print(10 and 0 and 4 > 2)

# 0

print(0 and 2 or 1)

# 1

流程控制之if判断

流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为

三种结构:顺序结构之前我们写的代码都是顺序结构)、分支结构(用到if判断)、

循环结构(用到while与for)

1、什么是判断

判断 条件:

做xxx

否则:

做yyy

2、为何要判断

为了让计算机像人一样根据条件的判断结果去做不同的事情

3、用if关键字来实现分支结构,如何用:完整语法

print("start...")

if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,代码3

代码1

代码2

代码3

elif 条件2: # 如果条件2的结果为True,就依次执行:代码1、代码2,代码3

代码1

代码2

代码3

elif 条件3: # 如果条件3的结果为True,就依次执行:代码1、代码2,代码3,......

代码1

代码2

代码3

......

else: #其它情况,就依次执行:代码1,代码2,代码3

代码1

代码2

代码3

print("end...")

注意:

  • 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行

  • 2、条件可以是任意表达式,但执行结果必须为布尔类型 在if判断中所有的数据类型也都会自动转换成布尔类型

    • 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
    • 2.2、其余均为True

1、单分支

print("start...")

if 条件1:

	代码1

	代码2

	代码3

print("end...")
 

案例:

print("start...")

inp_name = "jack"

inp_pwd = "456"


db_name = "jack"

db_pwd = "456"


if inp_name == db_name and inp_pwd == db_pwd:

print("用户登录成功")


print("end...")

2、双分支

print("start...")

if 条件1:

代码1

代码2

代码3

else:

代码1

代码2

代码3

print("end...")

案例:

print("start...")

inp_name = "xxx"

inp_pwd = "456"

db_name = "jack"
db_pwd = "456"

 
if inp_name == db_name and inp_pwd == db_pwd:
    print("用户登录成功")

else:

	print("账号或密码输入错误")

print("end...")

3、多分支

print("start...")

if 条件1:

代码1

代码2

 代码3

elif 条件2:

代码1

代码2

代码3

elif 条件3:

代码1

代码2

代码3

print("end...")



# 如果:成绩>=90,那么:优秀

# 如果成绩>=80且<90,那么:良好

# 如果成绩>=70且<80,那么:普通

# 其他情况:很差

# 案例:

score = 83

 
if score >= 90:

print("优秀")

elif score >= 80:

print("良好")

elif score >= 70:

print("普通")

else:

print("很差")

与用户交互

1、接收用户输入

inp_name = input("请输入您的用户名:")

inp_name = "123"

print(inp_name,type(inp_name))

 
# 案例1:

print("start...")

inp_name = input("请输入您的用户名:") # inp_name = "egon"

inp_pwd = input("请输入您的密码:") # inp_pwd = "123"
 

db_name = "jack"

db_pwd = 456

 

f inp_name == db_name and inp_pwd == db_pwd:

	print("用户登录成功")

else:
	print("账号或密码输入错误")

 

print("end...")

 

# 案例2:

score = 83

score = input("请输入您的成绩:") # score = "83"

score = int(score) # 将纯数字组成的字符串转成整型

if score >= 90: # "83" >= 90

     print("优秀")

elif score >= 80:

     print("良好")

elif score >= 70:

	print("普通")

else:

	print("很差")

 
# python2的raw_input() 等同于python3的input
 

2、格式化输出

print("1111",end='')

print("2222")

name = input("your name: ")

age = input("your age: ")

print("my name is %s my age is %s" % (name,age))

print("my name is %s my age is %d" % ("jack",19))

print("my name is %s my age is %d" % ("jack","19")) # %d 只能接收数字

print("my name is %s my age is %s" % ("jack",[1,2,3]))

从来就没有正确的选择,我们只不过是要努力奋斗,使当初的选择变得正确。

posted @ 2021-10-07 23:08  BaiM0  阅读(187)  评论(0编辑  收藏  举报