目标

  • 输入功能的语法
  • 输入input的特点
  • 数据类型转换的必要性
  • 数据类型转换常用方法
  • 掌握常用运算符的作用

输入

在Python中,程序接收用户输入的数据的功能即是输入。

image-20190116102035162

输入的语法

input("提示信息")

输入的特点

  • 当程序执行到input等待用户输入,输入完成之后才继续向下执行。

  • 在Python中,input接收用户输入后,一般存储到变量,方便使用。

  • 在Python中,input会把接收到的任意用户输入的数据都当做字符串处理。

password = input("请输入您的密码:")
print(f'您输入的密码是:{password}')

print(type(password))
# 类型是字符串

控制台输出结果如下:

image-20230511185724914

总结

  • 输入功能

    • input(‘提示文字’)
  • 输入的特点

    • 一般将input接收的数据存储到变量

    • input接收的任何数据默认都是字符串数据类型

强制转换数据类型

转换数据类型的作用

问:input()接收用户输入的数据都是字符串类型,如果用户输入1,想得到整型该如何操作?

答:转换数据类型即可,即将字符串类型转换成整型。将input()函数得到的数据(已自动成为字符串)强制转换为其他类型

转换数据类型的函数

函数 说明
int(x [,base ]) 将x转换为一个整数
float(x ) 将x转换为一个浮点数
complex(real [,imag ]) 创建一个复数,real为实部,imag为虚部
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象(返回数据的原本类型)
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个Unicode字符
ord(x ) 将一个字符转换为它的ASCII整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
bin(x ) 将一个整数转换为一个二进制字符串

快速体验

需求:input接收用户输入,用户输入“1”,将这个数据1转换成整型。

# 1. 接收用户输入
num = input('请输入您的幸运数字:')

# 2. 打印结果
print(f"您的幸运数字是{num}")


# 3. 检测接收到的用户输入的数据类型 -- str类型
print(type(num))

# 4. 转换数据类型为整型 -- int类型
print(type(int(num)))

实验

# 1. float() -- 转换成浮点型
num1 = 1
print(float(num1))
print(type(float(num1)))

# 2. str() -- 转换成字符串类型
num2 = 10
print(type(str(num2)))

# 3. tuple() -- 将一个序列转换成元组
list1 = [10, 20, 30] # list列表
print(tuple(list1))
print(type(tuple(list1))) # tuple元组

# 4. list() -- 将一个序列转换成列表
t1 = (100, 200, 300) # tuple元组
print(list(t1))
print(type(list(t1))) # list列表

# 5. eval() -- 将字符串中的数据转换成Python表达式原本类型(返回数据的原本类型)
str1 = '10'
str2 = '10.1'
str3 = '(1000, 2000, 3000)'
str4 = '[1, 2, 3]'
print(type(eval(str1))) # int
print(type(eval(str2))) # float
print(type(eval(str3))) # tuple元组
print(type(eval(str4))) # list 列表

注:print得到数据是不会将得到的数据字符串化处理的,只有当格式化输出需要时,在print()函数加入格式化字符才会输出相应的类型

总结

  • 转换数据类型常用的函数

    • int()
    • float()
    • str()
    • list()
    • tuple()
    • eval()

运算符

运算符的分类

  • 算数运算符

  • 赋值运算符

  • 复合赋值运算符

  • 比较运算符

  • 逻辑运算符

算数运算符

运算符 描述 实例
+ 1 + 1 输出结果为 2
- 1-1 输出结果为 0
* 2 * 2 输出结果为 4
/ 除(除尽) 10 / 2 输出结果为 5
// 整除(取商,往小的方向取整数) 9 // 4 输出结果为2
% 取余(取模, 返回除法的余数) 9 % 4 输出结果为 1
** 指数 2 ** 4 输出结果为 16,即 2 * 2 * 2 * 2
() 小括号 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9

注意:

  • 混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -

  • 只要运算中含浮点数(小数),计算出来的值一定是浮点数(小数)

赋值运算符

运算符 描述 实例
= 赋值 =右侧的结果赋值给等号左侧的变量
  • 单个变量赋值

num = 1
print(num)
  • 多个变量赋值

num1, float1, str1 = 10, 0.5, 'hello world'
print(num1)
print(float1)
print(str1)

结果如下:

image-20230511210657988
  • 多变量赋相同值

a = b = 10
print(a)
print(b)

结果如下:

image-20230511211124415

复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 c += a 等价于 c = c + a
-= 减法赋值运算符 c -= a 等价于 c = c- a
*= 乘法赋值运算符 c *= a 等价于 c = c * a
/= 除法赋值运算符 c /= a 等价于 c = c / a
//= 整除赋值运算符 c //= a 等价于 c = c // a
%= 取余赋值运算符 c %= a 等价于 c = c % a
**= 幂赋值运算符 c ** = a 等价于 c = c ** a
:= 海象运算符,可在表达式内部为变量赋值。

对于海象运算符=,它是Python3.8 版本新增运算符。在这个示例中,赋值表达式可以避免调用 len() 两次:

if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")

示例

a = 100
a += 1
# 输出101 a = a + 1,最终a = 100 + 1
print(a)

b = 2
b *= 3
# 输出6 b = b * 3,最终b = 2 * 3
print(b)

c = 10
c += 1 + 2
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
print(c)

对于复杂的含复合赋值运算符的表达式:

先算复合赋值运算符右侧的表达式,再算复合赋值运算。

d = 56
d *= 10 + 1
# d *= 11 -- d = 56*11

比较运算符

比较运算符也叫关系运算符, 通常用来判断。

运算符 描述 实例
== 判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True
!= 不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) 如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True
> 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a > b) 为 True
< 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False
>= 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True
<= 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 如a=3,b=3,则(a <= b) 为 True
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True

结果只能得到True或False,用于判断语句较多

逻辑运算符

运算符 逻辑表达式 描述 实例
and x and y 布尔"与":如果 x 为 False,x and y 返回 False,否则它返回 y 的值。 True and False, 返回 False。
or x or y 布尔"或":如果 x 是 True,它返回 True,否则它返回 y 的值。 False or True, 返回 True。
not not x 布尔"非":如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not True 返回 False, not False 返回 True
a = 1
b = 2
c = 3
# 1 and 与(且) 都真才真
print((a < b) and (c > b)) # True
print((a > b) and (c > b)) # False

# 2 or 或 有一真为真,都假才假
print((a > b) or (c > b)) # True
print((a > c) or (c > b)) # True

# 3 not 非 真即非假
print(not(c)) # False
print(not (a > b)) # True

使用运算符时,尽量加小括号()来运算

拓展

数字之间的逻辑运算

and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
or运算符,只有所有值为0结果才为0,否则结果为第一个非0数字

a = 0
b = 1
c = 2

# and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1

# or运算符,只有所有值为0结果才为0,否则结果为第一个非0数字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1

位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

示例:

a = 60            # 60 = 0011 1100 
b = 13 # 13 = 0000 1101
c = 0

c = a & b # 12 = 0000 1100
print ("1 - c 的值为:", c)

c = a | b # 61 = 0011 1101
print ("2 - c 的值为:", c)

c = a ^ b # 49 = 0011 0001
print ("3 - c 的值为:", c)

c = ~a # -61 = 1100 0011
print ("4 - c 的值为:", c)

c = a << 2 # 240 = 1111 0000
print ("5 - c 的值为:", c)

c = a >> 2 # 15 = 0000 1111
print ("6 - c 的值为:", c)

以上实例输出结果:

1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15

总结

  • 算数运算的优先级

    • 混合运算优先级顺序:()高于 ** 高于 * / // % 高于 + -
  • 赋值运算符

    • =
  • 复合赋值运算符

    • +=
    • -=
    • 优先级
      1. 先算复合赋值运算符右侧的表达式
      2. 再算复合赋值运算的算数运算
      3. 最后算赋值运算
  • 比较运算符

    • 判断相等: ==
    • 大于等于: >=
    • 小于等于:<=
    • 不等于: !=
  • 逻辑运算符

    • 与: and
    • 或:or
    • 非:not
  • 位运算符

    • 按位与&
    • 按位或|
    • 按位异或^
    • 按位取反~
    • 左移动<< 、右移动>>