一.Python基础数据类型
整型(int),浮点型 (float),字符串(str),列表(list),集合(set),元组(tuple),字典(dict) ,布尔型(bool)
其中字符串(str),集合(set),字典(dict)属于可变数据类型;
在变量第一次被赋值声明时,会在内存中开辟一块地址空间,用来存储被赋予的值。我们可以在修改存储在内存中的值的同时,保证其对应的内存地址不发生改变。
如下为整型(int)数据和字符串(str)数据的部分测试结果:
注:print(id(a))或print(id(b))显示的是内存空间地址的值。
其中整型(int),浮点型 (float),列表(list),元组(tuple),布尔型(bool)都属于不可变数据类型,内存空间锁死;在变量第一次被赋值声明时,也会在内存中开辟一块地址空间,用来存储被赋予的值;变量被声明后,变量的值就与开辟的内存地址绑定,若想要修改存储在其中的值,则会开辟一块新的内存地址空间保存新的值。
注:不管是可变数据类型还是不可变数据类型,若是采用直接拼接的方式,如 a = a + [某一个数值],则变量赋值后的空间地址都会随之改变。
二.转义
转义字符\
可以转义很多字符。
\n
表示换行;
\t
表示制表符;
\\
表示的字符就是\;
在python的交互命令中:
print('hello \n world')打印出来的字符串hello和world之间会产生空行;
print('hello \\n world')命令则会输出结果hello \n world;
print(r'hello \n world')命令同样会输出结果hello \n world;
三.布尔型判断真假
if 1: print(123) 输出:123 if 3>2: print(123) 输出:123 if None: print(123) None本身的意思就是空的,所以这里不会输出任何数 if 0: print(123) 0本身也有空值的意思,这里也不会输出任何数 if True: print(123) 输出:123 if False: print(123) Flase本身有假的含义,这里不会输出任何数
四.字符串和编码
因为计算机只能处理数字,若要处理文本,则需要先把文本转换为数字才能处理;早期采用美国人发明的ASCII
编码,例如大写字母A
的编码是65等等,为防止处理中文时和ASCII编码产生冲突,中国制定了GB2312
编码,用来把中文编进去。
全世界语言各国有各国的标准,为统合各种语言,防止编译时出现乱码,Unicode字符集应运而生。Unicode把所有语言都统一到一套编码里,这样就不会出现乱码问题了。
在这之后,由于Unicode字符集浪费字符空间,又将其改良为了‘UTF-8’编码。
若要询问汉字可以用几个字节表示,没有固定的表示字节。在不同的编码汉字占用不同的字节,在中国制定的GB2312
编码一般占用两个字节,但一些特殊汉字也会占用到三个字节以上。
注:查看ASCII编码的命令:for i in range (1,50000): print(chr(i))
根据值找下标的命令:print(ord('A')) 显示数值:65 ;print(chr(65)) 显示数值:A
五.转码命令及其结果展示
六. 字符串格式化
a = 'Hi, %s, you have $%d.' % ('Mary', 10000) print(a)
输出结果:Hi, Mary, you have $10000.
%s代表之后会放进来一个字符串,%d代表之后会放进来一个数值,%之后的代表一个元组,将元组中的值传递给之前预留好的变量参数。
七. 字符串的format()写法
format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}、.......
python命令:
a = 'Hello, {0}, 成绩提升了 {1:.2f}%'.format('小光', 13.765) print(a)
输出结果:Hello, 小光, 成绩提升了 13.77%
注:其中{0}、{1}都是占位符,之后format中的数值就会传递过来,{1:.2f}中.2f代表只取小数点后两位,之后的%没有特殊含义,只代表百分率。
八. 小知识——字符串的倒序
对字符串a = 'hello world!'进行倒序,使用命令print(a[len(a)::-1]) 或print(a[-1::-1]),最终得出的结果都是!dlrow olleh。
九. 去左右特殊字符或空白
1.简便方法:利用.strip()方法去除
a = ' #######hellow world_________ '
print(a.strip(' ').strip('#').strip('_'))
print(a.lstrip(' ')) //去左空白
print(a.rstrip(' ')) //去右空白
得出结果:
hellow world
#######hellow world_________
#######hellow world_________
2.用切片加循环的方式实现去除左右空白或特殊字符的功能
def strip1(a,b=' '):
m = 0
n = 0
while True:
if a[0] == b:
a = a[1:]
else:
m = 1
if a[-1] == b:
a = a[:-1]
else:
n = 1
if m == 1 and n == 1:
return a
print(strip1(strip1(strip1(a),'#'),'_'))
得出结果:
hellow world
注:去除左右空白或特殊字符时需要由外到内层层去除, 不然则显示原字符,没有变化;这里将去除功能封装在了strip1函数中,去除时只需要调用函数传参就可以了。
十. 字符串变大小写
a = 'hEllO wORld !'
print(a.upper()) //大写
print(a.lower()) //小写
print(a.swapcase()) //大小写反转
print(a.title()) //首字母大写,其余字母小写
得出结果:
HELLO WORLD !
hello world !
HeLLo WorLD !
Hello World !
测试:编写一个方法,打印出0-100000内所有类似于“12321”的回数。
方法一:
for i in range(0,100000):
if str(i) == str(i)[-1::-1]:
print(i)
方法二:
for num in range(100,100000):
b=0
num = str(num)
middle = len(num) // 2
for index in range(middle):
if num[index]!=num[-(index + 1)]:
b = 1
if b == 0:
print(num)