Python急速入门——(第三章:Python中的运算)

1.input函数的使用


1.input函数介绍:

1)作用:接受用户输入的数据。
2)返回值类型:输入值的类型为str,返回值类型也是str
3)值的存储:使用=对输入的值进行赋值。

2.例:

# 输入函数input函数
present = input('大圣想要什么礼物呢?')
print(present, type(present))

输入:

在这里插入图片描述

3.练习:

1)错误写法:

# 练习
# 从键盘上输入两个数,计算它们的和
# 错误写法
a = input('输入第一个数:')
b = input('输入第二个数:')
print(type(a), type(b))
print(a + b)

输出:

在这里插入图片描述

这里两个对象的类型都是str,这里的+就起到了一个字符串的连接作用,而不是数学运算中的加法。

2)正确写法:

# 正确写法
# 使用类型转换,将str转成int
a = int(input('输入第一个数:'))
b = int(input('输入第二个数:'))
print(type(a), type(b))
print(a + b)

输出:

在这里插入图片描述


2.运算符


2.1算术运算符


1.标准算术运算符:

  • 加(+)、减(-)、乘(*)、除(/)、整除(//)
# 标准算数运算符
print(1 + 1)  # 加法运算
print(1 - 2)  # 减法运算
print(2 * 4)  # 乘法运算
print(1 / 2)  # 除法运算
print(11 / 2)  # 除法运算
print(11 // 2)  # 整除运算

输出:

2
-1
8
0.5
5.5
5

2.取模运算:%

# 取模运算
print(11 % 2)
print(10.5 % 2)  # 可以对浮点数进行取模运算

输出:

1
0.5

3.幂运算符:**

# 幂运算符
print(2 ** 3)  # 2的3次方 2*2*2

输出:

8

4.一正一负,进行整除和取模的情况:

1)整除:

# 一正一负,进行整除和取模的情况
# 整除
print(9 // -4)  # -3
print(-9 // 4)  # -3
# 原则:向下取整数

输出:

-3
-3

9/-4和-4/9的结果都是-2.2多,向下取整就是-3。

2)取模:

# 取模:
print(9 % -4)  # -3
print(-9 % 4)  # 3
# 遵循公式:余数=被除数-除数*商

输出:

-3
3

对于第一个式子,有:余数=9-(-4)*(-3)=9-12=-3
对于第二个式子,有:余数=(-9)-4*(-3)=-9+12=3


2.2赋值运算符


1.特点:

  • 执行顺序:右到左
  • 支持链式赋值:a=b=c=20
  • 支持参数赋值:+=-=/=//=%=
  • 支持系列解包赋值:a,b,c=20,30,40

2.例:

1)链式赋值:

# 运算顺序从右到左
i = 1 + 3
print(i)

# 链式赋值
a = b = c = 20
print(a, id(a))
print(b, id(b))
print(c, id(c))
# 这三个变量的值相同,id也相同

输出:

4
20 140722231891336
20 140722231891336
20 140722231891336

链式赋值实际上只有一个整数对象,有多个引用。

2)参数赋值:

print('-------------支持参数赋值-------------')
# 和C语言中的运算是一样的,这里就不再过多描述了
a = 20
a += 10  # a=a+10 a=30
print(a)
a -= 5  # a=a-5 a=25
print(a)
a *= 4  # a=a*4 100
print(a, type(a))
a /= 3  # 33.333333
print(a, type(a))  # 类型改变
a //= 10  # 3
print(a, type(a))  # 变不回int类型
a %= 2
print(a, type(a))

输出:

-------------支持参数赋值-------------
30
25
100 <class 'int'>
33.333333333333336 <class 'float'>
3.0 <class 'float'>
1.0 <class 'float'>

3)解包赋值:

print('-------------解包赋值-------------')
a, b, c = 10, 20, 30.0
# 把10给a 20给b 30.0给c 左右对象和变量对应,且数量要相等
print(a, b, c)

输出:

-------------解包赋值-------------
10 20 30.0

应用:

# 用解包赋值交换两个变量的值
a = 10
b = 20
print('交换前:a =', a, 'b =', b)
a, b = b, a  # C语言要三行代码,而Python只需要一行
print('交换后:a =', a, 'b =', b)

输出:

交换前:a = 10 b = 20
交换后:a = 20 b = 10

2.3比较运算符


1.两种比较:

>,<,>=,<=,!=,== :对象value的比较
is,is not : 对象id的比较

2.值比较:

# 比较运算符的运算结果为布尔类型
a, b = 1, 2
print('a>b?', a > b)  # False
print('a<b?', a < b)  # True
print('a>=b?', a >= b)  # False
print('a<=b?', a <= b)  # True
print('a==b?', a == b)  # False
print('a!=b?', a != b)  # True

输出:

a>b? False
a<b? True
a>=b? False
a<=b? True
a==b? False
a!=b? True

3.id比较:

"""==比较的是对象的值
   比较对象的标识用is"""
a = 10
b = 10
print(a == b)  # True 说明a与b的值相等
print(a is b)  # True 说明a与b的id相等

# 以下代码后期讲解
list1 = [11, 22, 33, 44]
list2 = [11, 22, 33, 44]
print(list1 == list2)  # value相同
print(list1 is list2)  # id不同
print(id(list1))
print(id(list2))
print(list1 is not list2)

输出:

True
True
True
False
1830955275840
1830955349760
True

4.补充:

字符类型的数据只能和字符类型数据进行值的比较,而其他类型的数据,intfloatbool类型的数据都可以相互之间进行值的比较。

例:

  • str类型数据不能和其他数据进行值的比较。
a, b = True, 'a'
print(a > b)

在这里插入图片描述

  • str类型数据之间可以进行值的比较。
a, b = 'b', 'a'
print(a > b)

输出:

True
  • 其他类型数据之间可以进行值的比较。
# 其他数据之间可以任意进行值的比较
a, b = 2.0, True
print(a > b)

输出:

True

2.4布尔运算符


1.and

# and 并且
a, b = 1, 2
print('-------------and 并且----------------')
print(a == 1 and b == 2)  # True and True --> True
print(a == 1 and b < 2)  # True and False --> False
print(a > 1 and b == 2)  # False and True --> False
print(a != 1 and b != 2)  # False and False --> False
# 只有and两边都为True时,整个表达式的结果才是True

输出:

-------------and 并且----------------
True
False
False
False

2.or

# or 或者
print('-------------or 或者----------------')
print(a == 1 or b == 2)  # True and True --> True
print(a == 1 or b < 2)  # True and False --> True
print(a > 1 or b == 2)  # False and True --> True
print(a != 1 or b != 2)  # False and False --> False
# 只要or两边有一个结果是True,整个表达式的结果就是True

输出:

-------------or 或者----------------
True
True
True
False

3.逻辑取反 not

# in 和 not in
print('-------------in 和 not in----------------')
# 判断一个字符串在另一个字符串中是否存在
s = 'hello world'
print('world' in s)
print('k' in s)
print('world' not in s)
print('k' not in s)

输出:

# in 和 not in
print('-------------in 和 not in----------------')
# 判断一个字符串在另一个字符串中是否存在
s = 'hello world'
print('world' in s)
print('k' in s)
print('world' not in s)
print('k' not in s)

输出:

-------------in 和 not in----------------
True
False
False
True

2.5位运算符


1.按位与和按位或:(这里的数位说的都是二进制)

1)按位与&:对应数位都是1,结果才是1,否则为0。
2)按位或|:对应数位都是0,结果数位才是0,否则为1。

图例:(一个整型有4个字节,32个比特位,也就是32个格子,这里只写八个,明白意思即可)

在这里插入图片描述

程序:

# 按位与 & 按位或 |
print(4 & 8) # 同为1时,结果才为1
print(4 | 8) # 同为0时,结果才为0

输出:

0
12

2.左移位运算符<<

高位溢出舍弃,低位补0。

图例:

在这里插入图片描述

程序:

# 左移操作符 >>
print(4 << 1) # 向左移动一位(一个位置)
print(4 << 2) # 向左移动两位(两个位置)

输出:

8
16

3.右移位运算操作符>>

低位溢出舍弃,高位补0。

图例:

在这里插入图片描述

程序:

# 右移操作符 >>
print(4 >> 1) # 向右移动一位(一个位置)
print(4 >> 2) # 向右移动两位(两个位置)

输出:

2
1

4.注意:

有些同学可能认为,右移操作符一次移动一位,就像除以2似得。实则不然,当最低位是1时,也就是说被移位的数是奇数时,位操作符将不具有严格的除法规律。

# 位运算,并没有严格的除法规律
print(5 >> 1)

输出:

2

2.6运算符的优先级


图例:

在这里插入图片描述

满足两个规律:

1)数值运算>位运算>比较运算>逻辑运算>赋值运算。
2)有括号先算括号。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-指短琴长-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值