3.基本数据类型(int bool str)
基本数据类型
一.python基本数据类型
1. int ==> 整数. 主要用来进行数学运算
2. str ==> 字符串, 可以保存量数据并进行相应的操作
3. bool==>判断真假, True, False
4. list==> 存储⼤量数据.用[ ]表示
5. tuple=> 元组, 不可以发生改变 用( )表示
6. dict==> 字典, 保存键值对, ⼀样可以保存⼤量数据
7. set==> 集合, 保存大量数据. 不可以重复. 其实就是不保存value的dict
二. 整数(int)
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使⽤long类型.
在python3中不存在long类型 整数可以进行的操作:
bit_length(). 计算整数在内存中占用的二进制码的长度
十进制 | 二进制 | 长度bit_lenght() |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 2 |
4 | 100 | 3 |
5 | 101 | 3 |
6 | 110 | 3 |
7 | 111 | 3 |
8 | 1000 | 4 |
三. 布尔值(bool)
取值只有True, False. bool值没有操作.
转换问题:
str => int int(str)
int => str str(int)
int => bool bool(int).
0是False 非0是True
bool=>int int(bool) True是1, False是0
str => bool bool(str) 空字符串是False, 不空是True
bool => str str(bool) 把bool值转换成相应的"值"
四. 字符串(str)
把字符连成串串. 在python中用', ", ''', """引起来的内容被称为字符串.
切片和索引
1. 索引. 索引就是下标. 切记, 下标从0开始
s = "今天中吃胡萝卜" print(s[3]) # 吃 print(s[2]) # 中 print(s[-2]) # 萝 print(s[-6]) # 天
2. 切片, 我们可以使用下标来截取部分字符串的内容
语法: str[start: end]
规则: 顾头不顾尾, 从start开始截取. 截取到end位置. 但不包括end
s = "中间的,你们为什么不说话.难受" print(s[3:7]) #,你们为 print(s[5:9])#们为什么 print(s[-3:-7])#切不到东西 print(s[-7:-3])#么不说话 print(s[:6]) #中间的,你们 print(s[6:])#为什么不说话.难受 print(s[:])#中间的,你们为什么不说话.难受
步长: 如果是整数, 则从左往右取.如果是负数. 则从右往左取. 默认是1
切片语法: str[start:end:step]
start: 起始位置
end: 结束位置
step:步长
s = "abcdefghijklmn" print(s[::2]) #acegikm print(s[1:5:3]) #be print(s[7:3]) #切不到什么 print(s[7:3:-1]) #hgfe print(s[-1:-8:-2]) #nljh
切记, 字符串串是不可变的对象, 所以任何操作对原字符串串是不会有任何影响的
回文题目
s = "黄山落叶松叶落山黄" s2 = s[::-1] if s == s2: print("是回文") else: print("不是回文")
capitalize 首字母大写
s = "abcdefg" s1= s.capitalize() #把首字母大写 print(s1)#Abcdefg
title 所有首字母大写
s = "alex sb dsb wusir bi1gsb" s2 = s.title() #把所有的首字母都大写 print(s2)#Alex Sb Dsb Wusir Bi1Gsb
upper 所有字母大写
s = "alex sb dsb wusir bi1gsb" s3 = s.upper() #所有字母都大写 print(s3)#ALEX SB DSB WUSIR BI1GSB
lower和casefold 所有字母小写
s = "Alex Is Not A Or B" s5 = s.lower() #对欧洲的特殊字符识别不了 print(s5)#alex is not a or b s6 = s.casefold() #支持特殊文字 print(s6)#alex is not a or b s2 = "БBß" s7 = s2.lower() print(s7)#бbß s8 = s2.casefold() print(s8)#бbss
swapcase 大写变小写,小写变大写
s = "WuSir 昨天出去 Love 女生 呵呵" s2 = s.swapcase() #大写变小写,小写变大写 print(s2)#wUsIR 昨天出去 lOVE 女生 呵呵 s = "alex"
center 居中左右填充
s = "alex" s6 = s.center(10,"*")#文字居中左右填充 print(s6) #***alex***
格式化输出
name = "alex" age = 18 hobby = "wusir" print(f"领导叫{name},今年{age}岁,喜欢{hobby}") print("领导叫{},今年{}岁,喜欢{}".format(name,age,hobby)) print("领导叫{n},今年{a}岁,喜欢{h}".format(n=name,a = age,h = hobby)) print("领导叫{0},今年{2}岁,喜欢{1}".format(name,age,hobby))
strip 去除左右空白
s = "\n\t alex hhh 123 " s2 = s.strip()#去除字符串左右两边的空白字符 print(s2) s = "bb aa bb cc dd bb" s2 = s.strip("bb") #去除左右两边的bb print(s2)
split 字符串切割
s = "alex,wusir,sylar,taibai,eggon" lst = s.split(",") # 字符串切割, 根据,进行切割 print(lst)
replace 字符替换
s = " good alex good wusir good 大虾 good 胡辣汤 " s8 = s.replace("大虾","大鱼") #文字的替换 print(s8) s9 = s.replace(" ","") print(s9) s10 = s.replace("good","sb",2) print(s10)
startswith和endswith 以什么开头和以什么结尾
name = input("请输入你的名字:").strip() if name.startswith("钱"): #是否以它开头 print("过来") elif name.endswith("多"):#是否以它结尾 print("过来") else: print("走开")
count 统计元素个数
s = "alex is big sb" print(s.count("i"))#统计个数
find 查找
s = "红烧猪蹄子" print(s.find("烧")) #1 print(s.find("123")) #-1 print(s.index("烧")) #1 print(s.index("123")) #报错ValueError: substring not found
isalpha 判断是不是纯字母组成
s = "alexwusir" print(s.isalpha()) #纯字母,不包含数字 True
isdigit 判断是不是数字组成
s = "123456789" print(s.isdigit()) #纯数字,不包含其他字符 True
len 统计字符串长度
s = "我是周润发,我喜欢你" print(len(s)) #10 s = input("请输入一句话:") i = 0 while i < len(s): #计算字符串长度 print(s[i]) #10 i += 1
注意: len()是python的内置函数. 所以访问方式也不一样. 你就记着len()和print()一样就⾏了
迭代
我们可以使用for循环来便利(获取)字符串中的每一个字符
语法:
for 变量 in 可迭代对象:
pass
可迭代对象: 可以一个一个往外取值的对象
s = "大家好,我是小钱,我来自长沙,现在在学习python" #while循环 index = 0 while index < len(s): print(s[index]) index = index + 1 #for循环 for i in s: print(i) """ in有两种⽤用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯面的变量. 2. 不在for中. 判断xxx是否出现在str中. """ print("python" in s) #判断python是否出现在字符串中 #统计数字的个数 m = "I am sylar, I'm 14 years old, I have 2 dogs!" count = 0 for i in m: if i.isdigit(): count += 1 print(count)
1. 循环 while 条件: 循环体(break, continue) 循环的执行过程: 执行到while的时候. 首先判断条件是否成立.如果成立. 执行循环体. 再一次判断条件.... 如果不成立. 直接跳出循环 break 跳出当前本层循环 continue 结束本次循环. 继续执行下一次循环 2. 格式化输出 %s 占位字符串(常用) %d 占位数字 %f 占位浮点数 f"{变量}" 3. 运算符 != += 累加 a += b a = a + b and 并且, 左右两端同时为真. 结果才能是真 or 或者, 左右两端有一个是真. 结果就是真 not 非. 非真既假, 非假既真 顺序: () => not => and => or x or y => if x == 0 then y else x and和or相反 4. 编码 1. ascii 8bit 1byte 包含了 英文, 数字, 特殊字符, 特殊操作符 2. gbk 16bit 2byte 主要包含的: 中文, 日文, 韩文, 繁体中文 3. unicode 32bit 4byte 万国码 4. utf-8 英文: 8bit 1byte 欧洲: 16bit 2byte 中文: 24bit 3byte 二. 作业讲解 三. 今日主要内容 1. 基本数据类型概况 1, int 整数 2. str 字符串 3. bool 布尔值 4. list 列表. 一般存放大量的数据 ["门神xxxx", "风扇哥xxxx", 元素] 5. tuple 元组. 只读列表, 只能看啥也不能干. (元素, 元素) 6. dict 字典. {"风扇哥":"王伟哲", "wlh": "王力宏"} 7. set 集合 {"风扇哥", "wlh"}. 不重复 8. bytes 一堆字节. 最小数据单元 2. int类型的相关操作. 数字没办法执行其他操作. 操作只有+-*/, //, %, ** 8bit => 1byte bit_length() 二进制长度 3. bool类型的操作. 基本类型转换的问题 bool类型没有操作. 类型转换 结论一: 想把xxx转化成yy类型. yy(xxx) 结论二: 能够表示False的数据: 0, "", [], {}, set(), tuple(), None, False 4. str 认识字符串(重点, 多) 字符: 单一的文字符号 字符按照固定的顺序连成串 被' 或者" 或者''' 或者"""括起来的内容 索引 编号, 顺序 从0开始 切片 s[start:end:step] start:开始 end: 结束 取不到02 step: 步长, 控制方向. 每xx个取一个 一大波操作. 字符串是不可变的数据类型. 不论如何操作.对原来的字符串是不会有影响的 1, upper() 转换成大写. 忽略大小写 2, strip() 去掉左右两端的空白 空格, \t \n. 所有用户输入的内容都要去空白 3, replace(old, new) 把old替换成new 4, split() 字符串切割 5, startswith() 判断是否以xxx开头 6, find() 查找, 找不到返回-1 7, isdigit() 判断是否是数字组成 8, len() 求长度 for循环遍历字符串 for 变量 in 可迭代对象: 循环体 for c in s: # c: charactor(字符) s: string print(c)
作业