一.今日内容
- 基础数据类型总览
- int
- bool
- str
- 索引,切片
- 常用的操作方法
- for循环
二.复习
-
while 循环
- 结构
- break,continue,pass
-
格式化输出:str:让字符串的某些位置变成动态可变的,可传入的
- % s -->str ;d -->digit; i -->int;
- %%
-
编码的初始:
-
编码:密码本:二进制与文字的对应关系
-
ASCII:最早期的密码本,二进制与字母,数字,特殊字符的对应关系
0000 0101
‘abc’:00011010 00000101 00000010 3个字节
-
GBK国标:英文 1个字节,中文2个字节
- 英文字母,数字,特殊字符 ASCII
- 中文自己编写的
-
Unicode:万国码,(兼容性高,他与任何的密码本都有映射关系)
任意字符都用 4个字节表示
-
utf-8:
中文用 3 个字节表示
欧洲用 2 个字节表示
字母用 1 个字节表示
-
-
三.具体内容
1.基础数据类型总览
- 123456 456 --- int
- 'sdfghji家' --- str 存储少量的数据
- Ture False --- bool 判断真假
- ['asdf','wer',[wer]] --- list 存储大量的数据,
- (12,'sd',true) --- **tuple ** 存储大量的数据,不可改变里面的元素
- {'nam':'chen'} --- dict 存储大量的数据,查询速度非常快
- set 交集,并集,差集
2.int
-
十进制转二进制
-
''' 0000 1010 ''' b = 2**1+2**3
-
bit_length 十进制转化成二进制的有效长度
-
i = 4 print(i.bit_length()) #3 i =10 print(i.bit_length()) #4
3.bool
-
bool str int三者之间的转换
-
# str <---> int *** s1 =10 int(s1) #必须是数字组成 i= 100 str(i) #非空即为True;空为False #bool <---> int True 1;False 0 #非零即True; 0是False
-
应用
s = input('输入内容') if s: print('有内容') else: print('没有输入任何内容')
4.str
-
索引切片步长
- 对字符串进行索引,切片出来的数据都是字符串类型
- 按照索引取值
- 从左至右有顺序,下标,索引
- 顾头不顾尾
s1 = '上有天堂,下有苏杭' s2 = s1[0] print(s2,type(s2)) s3 = s1[-1] s4 = s1[0:6] s4 = s1[:6] s5 = s1[6:] s6 = s1[:5:2] s7 = s1[:] s8 = s1[-1:-6:-1] #按索引:s[index] #按照切片:s[start_index:end_index+1] #按照切片步长:s[start_index:end_index+1:2] #反向按照切片步长:s[start_index:end_index后延一位:-2] #思考题:倒序全部取出来? s9 = s1[::-1]
-
字符串的常用操作方法
-
upper lower
#不会对原字符串进行任何操作,都是产生一个新的字符串 s = 'taiASDhj' s1 = s.upper() #全部大写 s2 = s.lower() #全部小写 #应用: username = input('用户名:') password = input('密码:') code = 'AedD' yourcode = input('验证码: 不区分大小写') if yourcode.upper() == code.upper(): if(username == 'alex' and password == '123'): print('登录成功') else: print('用户名或密码错误') else: print('验证码输入错误')
-
startswith endswith 判断以什么开头或结尾
print(s.startswith('t'))#True print(s.startswith('taia'))#False #了解 print(s.startswith('A',3,5))#判断A是从索引3开始到索引5结束的字符串
-
replace 替换
msg = 'alex很nb,alex是老男孩教育的创始人之一,alex很帅' msg1 = msg.replace('alex','chenchen') #默认全部替换 msg2 = msg.replace('alex','chenchen',2)#替换前两个
-
strip 去掉空白 \t \n
s = ' \n er\t' s1 = s.strip()#er #了解 #可以去掉指定的字符 s2 = '123asdf432' s3 = s2.strip('123432')#前后同时去判断,遇到非,就停止 print(s3)#asd
-
split 分割
- 默认按照空格分割,返回一个列表
- 可以指定分隔符
#str--->list s = '太白 alex 辰辰' s1 = s.split()#['太白','alex','辰辰'] s2 = '太白:alex:辰辰' s3 = s2.split(':')#['太白','alex','辰辰'] #了解 s4 = ':barry:nvshen:wu' s5 = s4.split(':',2)#只按前两个:分割
-
join
- 将字符串或列表有序的加入某个字符,此时列表里面的元素必须全部是字符串
s = 'alex' s1 = '+'.join(s)#a+l+e+x s2 = ['太白','金星','辰辰'] s3 = ','.join(s2)#太白,金星,辰辰
-
count 找出字符串中某字符出现的个数
s = 'sdfghjhgfdsdfghgf' s1 = s.count('s')
-
format 格式化输出
#第一种用法 msg = '我叫{}今年{}性别{}'.format('大壮','18','男')#我叫大壮今年18性别男 #第二种用法 + 索引 msg1 = '我叫{0}今年{1}性别{2},我还叫{0}'.format('大壮','18','男')#我叫大壮今年18性别男,我还叫大壮 #第三种用法 msg2 = '我叫{name}今年{age}性别{sex}',format(name = '大壮',age = '18',sex = '男')#我叫大壮今年18性别男
-
is 系列
name = 'asdf233' print(name.isalnum())#判断字符串是否由字母,数字,中文组成 print(name.isalpha())#判断字符串是否只由字母,中文组成 print(name.isdecimal())#判断字符串是否只有十进制组成 #应用 num = input('请输入金额') if num.isdecimal: print(int(num)) else: print('输入有误')
-
in, not in
s = '天气之子tian' print('天' in s)#True print('天t' in s)#False print('天t' not in s)#True
for循环
-
len() 字符串的长度
s1 = '高晓松的晓说带你穿越古今,游历世界' index = 0 while index < len(s1): print(s1[index]) index += 1 #for 循环 for i in s1: print(i) for i in s1: if i == '今': break print(i) else: print(666) #break continue #for else 与while else 用法一致
-