字符串及for循环详解
第三天笔记
字符串详解
-
整型(数字)是不可变数据类型
-
可以在原地修改的叫做可变数据类型,不能再原地修改的叫做不可数据类型
-
整型 -- int
用于计算和比较
-2**31 ~ 2**31 -1 -2**63 ~ 2**63 -1
python3 中只有int
python2 中有int(整型) 和 long(长整型) 321312321L
-
-
进制转换
-
10进制 - 2进制 : 整除2,获取余数,余数从下向上进行整合
-
10进制就是常用的123456789
-
2进制就是010101
-
bin十进制转换二进制(常用)
-
ob -- 二进制
-
十进制转二进制举例
print(bin(3)) 代码意思是将3转为二进制11
-
二进制转十进制
-
手动举例
题目:将1001转化为十进制 思路:1是从右向左拿到的第一个数字, 2 ** 0 此时的 0用的是计算机数数的第一位 手动计算:1*2**0+0*2**1+0*2**2+1*2**3 = 9
-
int("字符串",2) 将某个进制转换十进制(括号里的2是二进制的意思)
-
程序计算举例
题目:将1001转化为二进制 代码:print(int("1001",2)) 也可以这样写代码: print(int(ob1011))
-
-
字符串方法详解(只讲常用,万能的点,这里讲解8个)
-
upper 全部大写
-
lower 全部小写
-
全部大写和全部小写举例
代码1: name = "alex" name1 = name.upper() # 全部大写 print(name) print(name1) 代码2: name = "ALEX" name1 = name.lower() # 全部小写 print(name) print(name1)
-
应用场景(不分大小写)举例
yzm = "0G8k" my_yzm = input("请输入验证码:[0G8k]") if yzm.lower() == my_yzm.lower(): print("ok") else: print("滚")
-
-
startswith 以什么开头,支持切片
-
endswith 以什么结尾,支持切片
-
举例
# name = "alex" # 以什么开头 # print(name.startswith("l",1,3)) # 判断是否以"a"开头,返回的是布尔值,支持切片 # 以什么结尾 # print(name.endswith("x")) # 判断是否以"x"结尾,返回的是布尔值,支持切片
-
-
count 统计
-
举例
代码: name = "meet_alex" print(name.count("e")) 输出的结果是:3
-
-
strip去除头尾两端的空格,换行符,制表符,还可指定去除内容
-
举例
name = "alex a" print(name.strip()) # 去除头尾两端的空格及换行符,制表符 print(name.strip("a")) # 可以指定去除头尾两端的内容
-
应用场景
账号:alex 密码:alex123 alex alex123 代码: user = input("账号:").strip() pwd = input("密码:").strip() if user == "alex" and pwd == "alex123": print("ok") else: print("gun")
-
-
split 分割, 默认以空格,换行符,制表符进行分割,可以指定分割内容, 返回是列表
-
举例
a = "alex:alex123" lst = a.split(":") # 默认按照空格及换行符,制表符进行分割 print(lst[0]) print(lst[1]) # ['alex', 'alex123'] 列表
-
-
replace 替换 参数1(旧值),参数2(新值),参数3(次数) 默认全换
-
举例
代码1: name = "alexcnb" name = name.replace("n","s") # 替换(参数1--旧值,参数2--新值,参数3--替换次数) print(name) 输出的结果是:alexcsb 代码2: name = "alex_meet" # 从左向右 name = name.replace("e","s",2) # 默认是全换 print(name) 输出的结果是:alsx_mset
-
-
-
is 系列(判断系列)
-
str.isalnum 判断数字,中文,字母
-
str.isalpha 判断中文,字母
-
str.isdigit 判断阿拉伯数字
-
str.isdecimal 判断十进制
-
举例
name = "1234" print(name.isalnum()) # 判断是不是由字母,中文,数字组成,返回的是布尔值 print(name.isalpha()) # 判断是不是由字母,中文组成,返回的是布尔值 print(name.isdigit()) # 判断是不是阿拉伯数字 ⑤ 这是一个bug print(name.isdecimal()) # 判断是不是十进制,返回的是布尔值
-
-
-
\n 换行 ; \t 相当于Tab键
-
举例
print("你\n好") #换行就是键盘上的回车键 print("你\t好") #制表符就是键盘上的Tab
-
id 查看空间内存地址
-
举例
a = 10 #内存地址是:1428849040 print(id(a)) a = a + 1 #这个a的内存地址是:1428849072 print(id(a))
-
索引(下标)
-
专业的举例
name = "meet" # 计算机从0开始数 #0123 (索引值|下标值) 从左向右 #-4-3-2-1 # 从右向左,意思就是-1对应的是t、-2对应的是e、-3对应的是e、-4对应的是m print(name[2]) # 通过索引准确定位内容,输出的是:e print(name[-4]) # 通过索引准确定位内容,输出的是:m
切片
-
举例
name = "meet_alex_wusir" 0123456789----14 print(name[5:9]) # [起始位置:终止位置] 顾头不顾腚 ,输出的结果是:alex print(name[-5:]) # [起始位置:终止位置(默认到结尾)] 顾头不顾腚 ,输出的结果是:wusir print(name[:]) # [起始位置(默认从开头):终止位置(默认到结尾)] 顾头不顾腚,输出的结果是:meet_alex_wusir
-
步长,可以控制查找方向
-
举例
-
name = "meet_alex_wusir" #01234546789 #-6-5-4-3-2-1 print(name[2:7:1]) #[起始位置:终止位置:步长(默认为1)] 输出的结果是:et_al print(name[2:7:2]) #[起始位置:终止位置:步长(改为2)] 输出的结果是:e_l print(name[4:11:3]) 输出的结果是:_ew print(name[-1:3:-1]) # 步长可以控制查找方向 输出的结果是:risuw_xela_
-
索引时,如果超出最大索引值会报错,索引是有序的
-
切片时,如果超出最大索引值不会报错
-
索引和切片只用给有序数据类型使用
-
举例
字符串 -- str 有序: 索引 不可变 : 内存地址 name = "meet" name1 = "meet" print(id(name)) print(id(name1)) # 小数据池 -- 驻留机制
for 循环,关键字
-
for 有限循环
-
while 死循环
-
for循环结构:
for i in xxx: #for关键字、i变量名、in关键字、xxx可迭代对象 循环体
-
举例
name = "alex" for i in name: # 赋值for循环内部帮咱们做的 print(i) # 打印了变量 输出的结果:a l e x
-
-
len() --公共方法(获取长度)
-
举例
count = 0 name = "alex" while count < len(name): print(name[count]) count += 1 输出的结果是:a l e x 与上面的例子一样,只是while需要用5行代码解决
-
-
面试题:
for i in "abcde": pass # 占这一行代码 print(i) 输出的结果是:e
-
可迭代对象
- str -- 字符串
- list -- 列表
- tuple -- 元祖
- set -- 集合
- dict -- 字典
- range -- 范围