# 在Python数值分成了三种:整数、浮点数(小数)、复数# 在Python中所有的整数都是int类型
a =10
b =20# Python中的整数的大小没有限制,可以是一个无限大的整数# c = 999999999999999999999999999999999999999999999 ** 100# 如果数字的长度过大,可以使用下划线作为分隔符
c =123_456_789# d = 0123 10进制的数字不能以0开头# 其他进制的整数,只要是数字打印时一定是以十进制的形式显示的# 二进制 0b开头
c =0b10# 二进制的10# 八进制 0o开头
c =0o10# 十六进制 0x开头
c =0x10# 也可以通过运算符来对数字进行运算,并且可以保证整数运算的精确
c =-100
c = c +3# 浮点数(小数),在Python中所有的小数都是float类型
c =1.23
c =4.56# 对浮点数进行运算时,可能会得到一个不精确的结果
c =0.1+0.2# 0.30000000000000004print(c)
04.字符串
# 字符串(str)# 字符串用来表示一段文本信息,字符串是程序中使用的最多的数据类型# 在Python中字符串需要使用引号引起来
s ='hello'# s = abc # 字符串必须使用引号引起来,不使用不是字符串# 引号可以是双引号,也可以是单引号,但是注意不要混着用
s ='hello'
s ="hello"# s = 'hello" 引号不能混合使用 SyntaxError: EOL while scanning string literal# 相同的引号之间不能嵌套# s = "子曰:"学而时习之,乐呵乐呵!""
s ='子曰:"学而时习之,乐呵乐呵!"'# 长字符串# 单引号和双引号不能跨行使用
s = '锄禾日当午,\
汗滴禾下土,\
谁知盘中餐,\
粒粒皆辛苦'
# 使用三重引号来表示一个长字符串 ''' """# 三重引号可以换行,并且会保留字符串中的格式
s ='''锄禾日当午,
汗滴禾下土,
谁知盘中餐,
粒粒皆辛苦'''# 转义字符# 可以使用 \ 作为转义字符,通过转义字符,可以在字符串中使用一些特殊的内容# 例子:# \' 表示'# \" 表示"# \t 表示制表符# \n 表示换行符# \\ 表示反斜杠# \uxxxx 表示Unicode编码
s ="子曰:\"学而时习之,\\\\n乐呵乐呵!\""# s = '\u2250'print(s)
05.格式化字符串
# 格式化字符串
a ='hello'# 字符串之间也可以进行加法运算# 如果将两个字符串进行相加,则会自动将两个字符串拼接为一个
a ='abc'+'haha'+'哈哈'# a = 123 # 字符串只能不能和其他的类型进行加法运算,如果做了会出现异常 TypeError: must be str, not int# print("a = "+a) # 这种写法在Python中不常见
a =123# print('a =',a)# 在创建字符串时,可以在字符串中指定占位符# %s 在字符串中表示任意字符# %f 浮点数占位符# %d 整数占位符
b ='Hello %s'%'孙悟空'
b ='hello %s 你好 %s'%('tom','孙悟空')
b ='hello %3.5s'%'abcdefg'# %3.5s字符串的长度限制在3-5之间
b ='hello %s'%123.456
b ='hello %.2f'%123.456
b ='hello %d'%123.95
b ='呵呵'# print('a = %s'%a)# 格式化字符串,可以通过在字符串前添加一个f来创建一个格式化字符串# 在格式化字符串中可以直接嵌入变量
c =f'hello {a}{b}'print(f'a = {a}')# 练习 创建一个变量保存你的名字,然后通过四种格式化字符串的方式# 在命令行中显示,欢迎 xxx 光临!
06.复制字符串
# 创建一个变量来保存你的名字
name ='孙悟空'# 使用四种方式来输出,欢迎 xxx 光临# 拼串print('欢迎 '+name+' 光临!')# 多个参数print('欢迎',name,'光临!')# 占位符print('欢迎 %s 光临!'%name)# 格式化字符串print(f'欢迎 {name} 光临!')# 字符串的复制(将字符串和数字相乘)
a ='abc'# * 在语言中表示乘法# 如果将字符串和数字相乘,则解释器会将字符串重复指定的次数并返回
a = a *20print(a)
07.布尔值和空值
# 布尔值(bool)# 布尔值主要用来做逻辑判断# 布尔值一共有两个 True 和 False# True表示真 False表示假
a =True
a =False# print('a =',a)# 布尔值实际上也属于整型,True就相当于1,False就相当于0# print(1 + False)# None(空值)# None专门用来表示不存在
b =Noneprint(b)
08.类型检查
# 通过类型检查,可以检查只能值(变量)的类型
a =123# 数值
b ='123'# 字符串# print('a =',a)# print('b =',b)、# type()用来检查值的类型# 该函数会将检查的结果作为返回值返回,可以通过变量来接收函数的返回值
c =type('123')
c =type(a)# print(type(b))print(type(1))# <class 'int'>print(type(1.5))# <class 'float'>print(type(True))# <class 'bool'>print(type('hello'))# <class 'str'>print(type(None))# <class 'NoneType'>
09.类型转换
# 类型转换四个函数 int() float() str() bool()# int() 可以用来将其他的对象转换为整型# 规则:# 布尔值:True -> 1 False -> 0# 浮点数:直接取整,省略小数点后的内容# 字符串:合法的整数字符串,直接转换为对应的数字# 如果不是一个合法的整数字符串,则报错 ValueError: invalid literal for int() with base 10: '11.5'# 对于其他不可转换为整型的对象,直接抛出异常 ValueError# float() 和 int()基本一致,不同的是它会将对象转换为浮点数# str() 可以将对象转换为字符串# True -> 'True'# False -> 'False'# 123 -> '123' # 。。。# bool() 可以将对象转换为布尔值,任何对象都可以转换为布尔值# 规则:对于所有表示空性的对象都会转换为False,其余的转换为True# 哪些表示的空性:0 、 None 、 '' 。。。
a =True# 调用int()来将a转换为整型# int()函数不会对原来的变量产生影响,他是对象转换为指定的类型并将其作为返回值返回# 如果希望修改原来的变量,则需要对变量进行重新赋值
a =int(a)
a =False
a =int(a)
a ='123'
a =int(a)
a =11.6
a =int(a)
a ='11.5'# a = int(a)
a =None# a = int(a)
a =1
a =float(a)
a =False
a =float(a)
a =123
a =str(a)
a =None
a =bool(a)print('a =',a)print('a的类型是',type(a))# b = 456# print('hello'+str(b))
10.算数运算符
# 算术运算符# + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作)# - 减法运算符# * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数)# / 除法运算符,运算时结果总会返回一个浮点类型# // 整除,只会保留计算后的整数位,总会返回一个整型# ** 幂运算,求一个值的几次幂# % 取模,求两个数相除的余数
a =10+5# 计算
a ='hello'+' '+'world'# 拼串
a =10-5# 计算
a =5-True
a = a -2# 用变量a的值减去2,然后再赋值给a# a = 'hello' - 'h' TypeError
a =5*5
a =10/5
a =5/2# a = 5 / 0 ZeroDivisionError: division by zero
a =10/3
a =10//3
a =5//2
a =2**2
a =10**5
a =16**0.5# 求16的平方根
a =10%5# 0
a =10%4# 2
a =10%3# 1
a =10%2# 0print("a =",a)
11.赋值运算符
# 赋值运算符
# = 可以将等号右侧的值赋值给等号左侧的变量
# += a += 5 相当于 a = a + 5
# -= a -= 5 相当于 a = a - 5
# *= a *= 5 相当于 a = a * 5
# **= a **= 5 相当于 a = a ** 5
# /= a /= 5 相当于 a = a / 5
# //= a //= 5 相当于 a = a // 5
# %= a %= 5 相当于 a = a % 5
a = 10
# a = a + 5
# a += 5
a -= 5
a *= 5
a **= 2
a /= 25
a = 25.0 # 在对浮点数做算术运算时,结果也会返回一个浮点数
a //= 5
a = 5
a %= 4
print('a =',a)
12.关系运算符
# 关系运算符
# 关系运算符用来比较两个值之间的关系,总会返回一个布尔值
# 如果关系成立,返回True,否则返回False
# > 比较左侧值是否大于右侧值
# >= 比较左侧的值是否大于或等于右侧的值
# < 比较左侧值是否小于右侧值
# <= 比较左侧的值是否小于或等于右侧的值
# == 比较两个对象的值是否相等
# != 比较两个对象的值是否不相等
# 相等和不等比较的是对象的值,而不是id
# is 比较两个对象是否是同一个对象,比较的是对象的id
# is not 比较两个对象是否不是同一个对象,比较的是对象的id
result = 10 > 20 # False
result = 30 > 20 # True
result = 30 < 20 # False
result = 10 >= 10 # True
result = 2 > True # True
# result = 2 > '1' TypeError: '>' not supported between instances of 'int' and 'str'
# 0032 > 0031
result = '2' > '1' # True
result = '2' > '11' # True
# 在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算,
# 当对字符串进行比较时,实际上比较的是字符串的Unicode编码
# 比较两个字符串的Unicode编码时,是逐位比较的
# 利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大
# 注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后再比较
# 0061 > 0062
result = 'a' > 'b' # False
result = 'c' < 'd' # True
result = 'ab' > 'b' # False
# print(int('2') > int('11'))
result = 1 == 1 # True
result = 'hello' == 'hello' # True
result = 'abc' == 'bcd' # False
result = 'abc' != 'bcd' # True
result = 1 == True # True
result = 1 is True # False
result = 1 is not True # True
print('result =',result)
print(id(1),id(True))
13. 逻辑运算符
# 逻辑运算符
# 逻辑运算符主要用来做一些逻辑判断
# not 逻辑非
# not可以对符号右侧的值进行非运算
# 对于布尔值,非运算会对其进行取反操作,True变False,False变True
# 对于非布尔值,非运算会先将其转换为布尔值,然后再取反
#
# and 逻辑与
# and可以对符号两侧的值进行与运算
# 只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False
# 与运算是找False的
# Python中的与运算是短路的与,如果第一个值为False,则不再看第二个值
#
# or 逻辑或
# or 可以对符号两侧的值进行或运算
# 或运算两个值中只要有一个True,就会返回True
# 或运算是找True的
# Python中的或运算是短路的或,如果第一个值为True,则不再看第二个值
#
# 练习:
# 尝试一下对布尔值进行三种逻辑运算
# 尝试对非布尔值进行三种逻辑运算,并观察返回的结果
#
a = True
a = not a # 对a进行非运算
a = 1
a = ''
a = not a
# print('a =',a)
result = True and True # True
result = True and False # False
result = False and True # False
result = False and False # False
# print(result)
# True and print('你猜我出来吗?') 第一个值是True,会看第二个值,所以print()会执行
# False and print('你猜我出来吗?')第一个值是False,不会看第二个值,所以print()不会执行
result = True or True # True
result = True or False # True
result = False or True # True
result = False or False # False
# print(result)
# False or print('你猜我出来吗?') 第一个值为False,继续看第二个,所以打印语句执行
# True or print('你猜我出来吗?') 第一个值为True,不看第二个,所以打印语句不执行
# 非布尔值的与或运算
# 当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值
# 与运算的规则
# 与运算是找False的,如果第一个值是False,则不看第二个值
# 如果第一个值是False,则直接返回第一个值,否则返回第二个值
# 或运算的规则
# 或运算是找True的,如果第一个值是True,则不看第二个值
# 如果第一个值是True,则直接返回第一个值,否则返回第二个值
# True and True
result = 1 and 2 # 2
# True and False
result = 1 and 0 # 0
# False and True
result = 0 and 1 # 0
# False and False
result = 0 and None # 0
# True or True
result = 1 or 2 # 1
# True or False
result = 1 or 0 # 1
# False or True
result = 0 or 1 # 1
# False or False
result = 0 or None # None
print(result)
14.条件运算符
# 条件运算符(三元运算符)
# 语法: 语句1 if 条件表达式 else 语句2
# 执行流程:
# 条件运算符在执行时,会先对条件表达式进行求值判断
# 如果判断结果为True,则执行语句1,并返回执行结果
# 如果判断结果为False,则执行语句2,并返回执行结果
# 练习:
# 现在有a b c三个变量,三个变量中分别保存有三个数值,
# 请通过条件运算符获取三个值中的最大值
# print('你好') if False else print('Hello')
a = 30
b = 50
# print('a的值比较大!') if a > b else print('b的值比较大!')
# 获取a和b之间的较大值
max = a if a > b else b
print(max)
15.运算符优先级
a = 40
b = 50
c = 30
# 通过条件运算符获取三个值中的最大值
# max = a if a > b else b
# max = max if max > c else c
max = a if (a > b and a > c) else (b if b > c else c) # 不推荐这么使用
# max = a if (b < a > c) else (b if b > c else c)
# print(max)
# 运算符的优先级
# 和数学中一样,在Python运算也有优先级,比如先乘除 后加减
# 运算符的优先级可以根据优先级的表格来查询,
# 在表格中位置越靠下的运算符优先级越高,优先级越高的越优先计算
# 如果优先级一样则自左向右计算
# 关于优先级的表格,你知道有这么一个东西就够了,千万不要去记
# 在开发中如果遇到优先级不清楚的,则可以通过小括号来改变运算顺序
a = 1 + 2 * 3
# 一样 and高 or高
# 如果or的优先级高,或者两个运算符的优先级一样高
# 则需要先进行或运算,则运算结果是3
# 如果and的优先级高,则应该先计算与运算
# 则运算结果是1
a = 1 or 2 and 3
# print(a)
# 逻辑运算符(补充)
# 逻辑运算符可以连着使用
result = 1 < 2 < 3 # 相当于 1 < 2 and 2 < 3
result = 10 < 20 > 15
print(result)