基础数据类型
一.总览
1.小知识
python2在编译安装时,可以通过参数 --enable-unicode=ucs2
或 --enable-unicode=usc4
分别指定使用两个字节,四个字节表示一个Unicode字符;python3无法进行选择,默认使用ucs4
查看当前python中表示Unicode字符串时占用的空间:
import sys
print(sys.maxunicode)
#如果值是65535, 则表示使用ucs2标准,即:2个字节表示
#如果值是1114111,则表示使用ucs4标准,即:4个字节表示
2. 基础数据类型总览
int:用于计算,计数,运算等。1,2,3...
str:'...' 用户少量数据的存储,便于操作。
bool:True,False,两种状态,机器反馈给用户的对、错
list:[1,'a',True,[],(),{}....]大量的数据,各种数据类型,操作方便。
tuple:(1,'alex',True,(),{}...),只读列表
dict:字典 大量的关联型数据
{'name':'a','name_list':[b,c,d...],'信息':{'name':'么么','sex':不详}}
set:集合。{} 关系测试
二.int、bool
1.int
查询十进制转化成二进制占用的最小位数 *
i = 4
print(i.bit_length())
int —> str str(int) int(str) str转化成int自动去除空字符
2.bool
数据类型之间的转化 *****
int —> bool: 非零即True,零为False, True —> 1 False —> 0
bool <—> str
空字符串 —> bool False,非空即True
bool —> str
#应用
name = input('>>>')
if name:
print(666)
else:
print('空')
三.字符串str
1.索引切片步长
#按照索引取值,取出来都是一个字符,形成的字符串
s1 = 'python学习'
s2 = s1[0]
s3 = s1[-2]
print(s2, type(s2))
print(s3, type(s3))
#按切片取值,留首不留尾
s5 = s1[0:4]
s6 = s1[:5]
s7 = s1[4:-1]
s8 = s1[3:]
print(s5, s6, s7, s8)
#按切片加步长
s9 = s1[:5:2] #加入想取到pto
print(s9)
s10 = s1[1::2] #从y开始每隔两个取一个
print(s10)
s11 = s1[-1:-5:-1] #如果想倒序取值,需要j加一个反向步长
2.字符串中常见方法
1.capitalize()
首字母大写,其余字母小写***
name = 'mylove'
print(name.capitalize())
2. center()
字符串居中前后填充自定义的字符**
name = 'mylove'
print(name.center(30, '*'))
3. upper() lower()
全大写 全小写 *****
name = 'mylove'
print(name.upper())
应用举例:验证码
username = input('请输入用户名:')
my_code = input('请输入验证码:').upper()
code = 'aaBfa'.upper()
print(my_code, code)
if username == 'alex' and my_code == code:
print('验证成功')
输入验证时不区分大小写
4.startswith() endswith()
*****
name = 'mylove'
print(name.startswith('my')) #判断是否以'my'为开头
print(name.startswith('l', 2, 4)) #判断是否从2到4开始以'l'为开头
print(name.endswith('i')) #判断是否以''为结尾
5.swapcase()
大小写翻转**
name = 'mylove'
print(name.swapcase())
6.title()
非字母隔开的每个部分的首字母大写 **
s1 = 'alex wusir*airen99zhufu'
print(s1.title())
7.find()
通过元素找索引,找到第一个元素就返回,没有此元素则返回-1,切片寻找返回的索引还是原始全部的标号*****
name = 'mylove'
print(name.find('m', 1, 5))
print(name.find('l',1, 3))
print(name.find('tt'))
8.index()
通过元素找索引,找到第一个元素就返回,没有此元素则报错*****
name = 'mylove'
print(name.index('q'))
9.strip()
默认去除字符串前后的空格、换行符、制表符*****
lstrip()去掉前面的制表符 rstrip()去掉后面的制表符
name1 = '\t mylove\n'
name2 = '**aabbb*&'
print(name1.strip())
print(name2.strip('*')) #可以指定字符,从两端开始去除,直到遇到非所指定字符为止
print(name2.strip('*ab'))
举例
username = input('请输入您的用户米:').strip() #主动去除用户名前后的空格,换行符,制表符,防止用户误输入
if username == 'alex':
print('登陆成功')
10.split()
将字符串分割成列表 str->list ******
rsplit() 从右往左分割
p1 = 'meme aini mengmengda'
l1 = p1.split() #默认按照空格分割
print(l1)
p2 = 'aa,bb,cc'
print(p2.split(',')) #按照逗号分割
p3 = ' dd cc aa'
print(p3.split()) #默认时split分割不分第一个空格前的空内容 这是个bug
print(p3.split(' '))
p4 = ',dd,dd,dd'
print(p4.split(','))
s5 = 'wsnsqs'
print(s5.split('s',1)) #可以设置分割次数
#rsplit 从右往左分割
print(s5.rsplit('s'))
11.join()
自定制连接符,将可迭代对象的元素连接起来 ******
应用场合:列表转化成字符串
str1 = 'love'
s1 = '*'.join(str1)
print(s1)
12.replace()
替换次数可设 *****
str2 = '你是个好人,你很丑,你没钱。。。'
s1 = str2.replace('你', 'sb', 2)
print(s1)
13.格式化输出 format
#三种方式
#第一种
s1 = '我叫{},今年{},性别{}'.format('灵','20','你猜')
print(s1)
#第二种
s1 = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('灵','20','你猜')
print(s1)
#第三种
s1 = '我叫{name},今年{age},性别{sex}'.format(name = '灵',age = '20',sex = '你猜')
print(s1)
14.is系列
name = 'alice250'
print(name.isalnum()) #判断字符串是否由数字或字母组成
print(name.isdigit()) #判断字符串是否由数字组成
print(name.isalpha()) #判断字符串是否由字母组成
15.公共方法
name = 'aliceaa'
print(name.count('a', 1, 6)) #有切片
print(len(name))
四.for循环
如果对一个数据类型进行循环,或者是一个有限次数的时候,往往要用到for循环
for循环的次数是和迭代对象的元素个数有关
for 变量 in iterable(可迭代对象:多个元素组成的可列对象)
s1 = 'afdafsdgasfsdfa'
for i in s1:
print(i)