今日大纲:
1. 基础数据类型 总览 2. int 3. bool 4. str 5. for循环
1. 基础数据类型 总览
int: 用于计算,计数等 str:'这些内容',用户少量数据的存储,便于操作 bool:True, False,两种状态,机器反馈给用户的对/错 list:[1, 'k', True, [], (), {}, ...] 大量的数据,各种数据类型,操作方便 tuple:(1, 'k', True, [], (), {}, ...) 只读列表 dict:字典. 大量的关联性数据 { 'name': 'alex', 'name_list': ['司徒', '李莲英', ...], '太白': { 'name': '太白', 'sex': '男'}} set:集合. {} 关系测试. 两种集合之间的并集是什么等等.
2. int
i = 4 print(i.bit_length()) 查询十进制转化成二进制占用的最小位数 结果: 3 十进制 二进制 1 0000 0001 2 0000 0010 3 0000 0011 4 0000 0100
3. bool
数据类型之间的转化 int <--> str str(int); int(str) ****** int <--> bool 非0为True; 0为False True --> 1; False --> 0 str --> bool ''(空字符串) --> False; 非空 --> True name = input('>>>') if name: print(666) else: print('无内容') bool --> str 没啥意义
4. str
对字符串的下面这两部分操作,形成的都是一个新的字符串,与原来的字符串没有关系
第一部分:索引、切片、步长
- 按照索引取值,取出来的都是一个字符形成的字符串
s1 = 'Python1期_骑士计划' s2 = s1[0] print(s2) P print(type(s2)) <class 'str'> s3 = s1[2] print(s3) t s4 = s1[-1] print(s4) 划 s5 = s1[-2] print(s5) 计
- 按照切片取值, 顾头不顾尾
s6 = s1[0:6] print(s6) Python s61 = s1[:6] print(s61) Python s7 = s1[1:7] print(s7) ython1 s8 = s1[6:-1] print(s8) 1期_骑士计 s81 = s1[6:] print(s81) 1期_骑士计划
- 按照切片+步长
s1 = 'Python1期_骑士计划' s9 = s1[:5:2] print(s9) Pto s91 = s1[1::2] print(s91) yhn期骑计
如果想倒序取值,加一个反向步长(负号)
s10 = s1[-1:-5:-1] print(s10) 划计士骑 s11 = s1[-1:-6:-2] print(s11) 划士_
第二部分:字符串的常用方法
name = 'old boy' print(name.capitalize()) Old boy;首字母大写 *** print(name.title()) Old Boy s1 = 'alex wusir*taibai6nvshen' print(s1.title()) 非字母隔开的每个部分的首字母大写 **
center: 字符串居中,前后填充自定义的字符 **
print(name.center(20, '*')) ******old boy*******
upper(全部大写); lower(全部小写) ******
print(name.upper()) OLD BOY
print(name.lower()) old boy
应用举例:
username = input('请输入用户名:') code = 'ADfeR'.lower() your_code = input('请输入验证码:').lower() if username == 'alex' and code == your_code: print('登录成功') name = 'old boy'
startswith: 判断以什么为开头 *****
print(name.startswith('ol')) True 判断第5个位置之后的字符串以什么为开头 print(name.startswith('b', 4)) True 判断第2个位置到第5个位置的字符串以什么为开头 print(name.startswith('ld', 1, 5)) True
endswith: 判断以什么为结尾 *****
与startswith用法一致 print(name.endswith('o')) False
swapcase: 大小写转换 **
name = 'oLd boY' print(name.swapcase()) OlD BOy
find(*****): 通过元素找索引, 找到第一个元素就返回其索引值,没有此元素则返回-1 *****
print(name.find('d')) 2 print(name.find('Ld')) 1 print(name.find('w')) -1 print(name.find('o', 1, -1)) 5; find也可以设置字符串的开始和结束位置
index(*****): 通过元素找索引, 找到第一个元素就返回其索引值,没有此元素则报错
print(name.index('w')) 报错
strip(*****): 默认去除字符串前后的空格,换行符(\n),制表符(\t)
name = '\told boy ' print(name.strip()) 结果: old boy
strip:指定去除的字符
name1 = '*alex**' print(name1.strip('*')) alex name2 = 'weralexqwe' print(name2.strip('erw')) alexq
应用举例:
username = input('请输入用户名:').strip() if username == 'alex': print('登录成功')
lstrip: 去除前面的空格
rstrip: 去除后面的空格
split: 将字符串分割成列表(str --> list); 默认按照空格分割
s1 = 'alex wusir taibai' l1 = s1.split() print(l1) ['alex', 'wusir', 'taibai'] s2 = 'alex,wusir taibai' l2 = s2.split(',') print(l2) ['alex', 'wusir taibai']
注意这三个的区别
s3 = ' alex wusir taibai' print(s3.split()) ['alex', 'wusir', 'taibai'] s31 = ' alex wusir taibai' print(s31.split(' ')) ['', 'alex', 'wusir', 'taibai'] s4 = ',alex,wusir,taibai' print(s4.split(',')) ['', 'alex', 'wusir', 'taibai']
设置split的分割次数
s5 = 'alexlwle' print(s5.split('l', 1)) ['a', 'exlwle'] print(s5.rsplit('l'))
join(**********): 自定制连接符,将可迭代对象中的元素连接起来
str1 = 'alex' s2 = '*'.join(str1) print(s2) a*l*e*x
replace(*****): 替换
str2 = 'alex 是创始人,alex很牛逼,alex...' s3 = str2.replace('alex', 'SB') print(s3) SB 是创始人,SB很牛逼,SB...
可以设置替换次数,但是只能从前往后开始替换
str2 = 'alex 是创始人,alex很牛逼,alex...' s3 = str2.replace('alex', 'SB', 1) print(s3) SB 是创始人,alex很牛逼,alex...
格式化输出: format
三种方式 第一种: s1 = '我叫{}, 今年{}, 性别{}'.format('太白', '28', '男') print(s1) 我叫太白, 今年28, 性别男 第二种: s2 = '我叫{0}, 今年{1}, 性别{2}, 我还是叫{0}'.format('太白', '28', '男') print(s2) 我叫太白, 今年28, 性别男, 我还是叫太白 第三种: s3 = '我叫{name}, 今年{age}, 性别{sex}, 我还是叫{name}'.format(age = '28', name = '太白', sex = '男') print(s3) 我叫太白, 今年28, 性别男, 我还是叫太白
is 系列
name = 'taibai123' print(name.isalnum()) True; 判断name是否以字母或者数字组成 print(name.isdigit()) False; 判断name是否全部以数字组成 print(name.isalpha()) False; 判断name是否全部以字母组成
公共方法
count: 计数,计算给定字符出现几次,可以进行切片 name = 'alex' print(name.count('a')) 1 len: 计算字符串有多长,就是元素的个数 print(len(name)) 4
5. for循环
先用while循环打印每个元素 s1 = 'sdkjasgfjgsafkj' index = 0 while index < len(s1): print(s1[index]) index += 1
如果对一个数据类型进行循环或者是一个有限循环的时候,往往要用到for循环
for i in s1: for 变量 in iterable(可迭代对象) print(i) for i in s1: for 循环的次数是和可迭代对象的元素的个数有关 print(s1)