变量和类型

变量是数据的载体,简单来说就是一块来保存数据的内存空间,变量的值可以被读取和修改。

Python中数据类型很多,而且允许我们自定义新的数据类型(后续再讲),下面是常用的数据类型。

  • 整型(int):Python中可以处理任意大小的整数,而且支持二进制(0b11->4)、八进制(0o100->64)、十进制(100)和十六进制(0x100->256)的表示法
  • 浮点型(float):浮点数也就是小数,之所以成为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点的位置是可变的,浮点数除了数学写法(12.345)之外,还支持科学计数法(1.23e2)
  • 字符串型(str):字符串是以单引号或双引号括起来的任意文本,比如"hello"和’hello'。打印的时候不打印引号
  • 布尔型(bool):布尔值只有True、False两个值。
  • 复数类型:z = 1.23e-4 + 5.6e+89j z.real获得实部,z.imag获得虚部。

浮点数间运算存在不确定尾数

0.1+1.2==0.3 => False

round(0.1+0.2,1)==0.3 =>True

round(x,d):对x四舍五入,d是小数截取位数。浮点数间运算及比较用round()函数辅助。

abs(x):绝对值。divmod(x,y)商余,(x//y,x%y)同时输出商和余数,divmod(10,3)结果为(3,1)。pow(x,y[,z])幂余,(x**y)%z,[..]表示参数z可省略,pow(3,pow(3,99),10000)结果为4587。

变量命名

在Python中,变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。(见名知意)

硬性规则

  • 变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像!@#这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母
  • 大小写敏感,简单的说就是大写的A和小写的a是两个不同的变量。
  • 变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如函数、模块等的名字)发生重名的冲突

非硬性规则

  • 变量名通常使用小写英文字母,多个单词用下划线进行连接。
  • 受保护的变量用单个下划线开头(后面会讲到)。
  • 私有的变量用两个下划线开头(后面会讲到)。

变量的使用

1
2
3
4
5
6
7
a = 45	# a变量保存了45
b = 12
print(a+b)	# 57
print(a-b)	# 33
print(a*b)	# 540
print(a/b)	# 3.75
print(a//b) # 整数除10/

float小数默认位数

在变量的格式输出,使用%-string格式化时默认是6位小数

其他运算或格式化输出都是默认1位小数,其中有更多位数,就取最大位数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
a=float(2)
print("%f"%(a))

print(f"{a}")
print("{0}".format(a))  # format函数
print(a)

"""
2.000000
2.0
2.0
2.0
"""

类型检查

Python中可以使用type()函数对变量的类型进行检查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
"""
使用type()检查变量的类型
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
print(type(a))    # <class 'int'>
print(type(b))    # <class 'float'>
print(type(c))    # <class 'str'>
print(type(d))    # <class 'bool'>

类型转化

不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现。

  • int():将一个数值或字符串转换成整数,可以指定进制。
  • float():将一个字符串转换成浮点数
  • str():将指定的对象转换成字符串形式,可以指定编码。
  • chr():将整数转换成该编码对应的字符串(一个字符)。
  • ord():将字符串(一个字符)转换成对应的编码(整数)。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
"""
Python中的类型转换操作
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
# 整数转成浮点数
print(float(a))    # 100.0
# 浮点型转成字符串 (输出字符串时不会看到引号)
print(str(b))      # 12.345
# 字符串转成布尔型 (有内容的字符串都会变成True)
print(bool(c))     # True
# 布尔型转成整数 (True会转成1,False会转成0)
print(int(d))      # 1
# 将整数变成对应的字符 (97刚好对应字符表中的字母a)
print(chr(97))     # a
# 将字符转成整数 (Python中字符和字符串表示法相同)
print(ord('a'))    # 97

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
a = '123'
b = int(a)
c = False
d = str(c)

print('a =',a,'的类型是',type(a))	# 字符串的引号不会打印出来
print('b =',b,'的类型是',type(b))
print('c =',c,'的类型是',type(c))
print('d =',d,'的类型是',type(d))

"""
a = 123 的类型是 <class 'str'>
b = 123 的类型是 <class 'int'>
c = False 的类型是 <class 'bool'>
d = False 的类型是 <class 'str'>
"""

字符串常用操作

  • 字符串长度:len(str)
  • 单词首字母变大写:str.title()
  • 字符串变大写:str.upper()
  • 字符串变小写:str.lower()
  • 判断字符串是不是大写:str.isupper()
  • 字符串是不是以hello开头:str.startswith(‘hello’)(以单个字符'!‘开头也是一样’!')
  • 字符串是不是以hello结尾:str.endswith(‘hello’)(单字符同理)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
str1 = 'hello, world!'
print('字符串的长度是:', len(str1))
print('单词首字母大写: ', str1.title())
print('字符串变大写: ', str1.upper())
str1 = str1.upper()
print('字符串变小写: ', str1.lower())
print(str1)
print('字符串是不是大写: ', str1.isupper())
print('字符串是不是以hello开头: ', str1.startswith('hello'))
print('字符串是不是以hello结尾: ', str1.endswith('hello'))
print('字符串是不是以感叹号开头: ', str1.startswith('!'))
print('字符串是不是以感叹号结尾: ', str1.endswith('!'))

"""
字符串的长度是: 13
单词首字母大写:  Hello, World!
字符串变大写:  HELLO, WORLD!
字符串变小写:  hello, world!
HELLO, WORLD!
字符串是不是大写:  True
字符串是不是以hello开头:  False
字符串是不是以hello结尾:  False
字符串是不是以感叹号开头:  False
字符串是不是以感叹号结尾:  True
"""