基本数据类型(int, bool, str)

基本数据类型(int, bool, str)

python基本数据类型

  • int ==> 整数. 主要⽤来进⾏数学运算
  • str ==> 字符串, 可以保存少量数据并进⾏相应的操作
  • bool==>判断真假, True, False
  • list ==> 列表 存储⼤量数据.⽤[ ]表⽰
  • tuple=> 元组, 不可以发⽣改变 ⽤( )表示 不可变
  • dict==> 字典, 以key: value的形式存储数据 key(标签, 便于查找) value(所保存的值)查找速度快
  • set==> 集合 (类似数学里的集合) 保存⼤量数据. 不可以重复. 其实就是不保存value的dict

整数 (int)

整数

  • 常见操作就那么几个 + - * / // % **
a = 4
print(a.bit_length())   #运行结果是 3  即  三位  数字4在二进制里显示是 100

布尔值 (bool)

  • 转换问题 :
  • str = str(int) 整数转换为字符串
  • int = int(str) 字符串转换为整数
  • bool = bool (int) 整数转换为布尔值 打印结果: 0 是False 非0是True
  • int = int(bool) 布尔值转换为整数 打印结果: True是1 False是0
  • bool = bool(str) 字符串转换为布尔值 空字符串是False, 不空是True
  • str = str(bool) 布尔值转换为字符串 把bool值转换成相应的"值"
  • 可以当做False来用的数据: 0 "" [] {} () None [] 是 (列表)

字符串 (str)

  • 字符: 单一文字符号
  • 字符串: 把字符连成串,有序的字符序列
  • 字符串由 ' " ''' """括起来的内容

索引

  • 索引 :一排数字,字符串. 反应第某个位置的字符 索引的下标从0开始. 使用 [] 来获取数据, 索引从0位开始计数
  • 缺点: 有bug, 如果此位没有字符就会报错
       01234 5 6 7 
s12 = "Alex是个教师"
print(s12[0])  # 打印出来时 "A"
print(s12[8])  # 会报错 ,没有第八位
print(s12[-1]) # 打印出是"师" (表示倒数第一位字符)

延伸题:

# name = "aleX leNb" 请输出 name 变量对应的值中 "e" 所在索引位置?
name = "aleX leNb"
num = 0
while num < len(name):
    if name[num] == "e":
        print(num)
    num += 1
# 输出结果是"e"所出现过的位置

切片

  • 可以使⽤下标来截取部分字符串的内容
  • 语法格式: str[start : end : step] start : 开始 end : 结尾 step : 步长
  • 规则: 顾头不顾腚, 从start开始截取. 截取到end位置. 但不包括end
s12 = "Alex是个教师"
print(s12[0:3]) # 从0获取到3. 不包含3. 结果: Ale
print(s12[4:])  # 如果想获取到最后. 那么最后⼀个值可以不给
print(s12[-1:-5]) # 从-1 获取到 -5 这样是获取不到任何结果的. 从-1向右数. 你怎么数也数不到-5
print(s12[-5:-1]) # 打印出的是 "x是个教"  (始终是从左往右取,  指的是start end 处设置的数字 在数轴(x轴)上的方向,-5是start开始位, -1是end位,取不到)
print(s2[-1:-5:-1]) # 步⻓是-1. 这时就从右往左取值了
print(s12[:]) # 原样输出 "Alex是个教师"
print(s12[::2])  # 打印出"是Ae是教", 从0取到尾,每2个取1个字符

字符串的常用相关操作⽅法

字符大小写

capitalize 首 字母大写
s = "alex is not a good man! Tory is a good man"
s1 = s.capitalize()  # 首字母大写
print(s1) #打印出来是"Alex is not a good man! tory is a good man"
upper 全部转换成⼤写
  • (忽略大小写的时候用,例 : 验证码) 例 ; s1
lower 全部转换成⼩写
  • (忽略大小写的时候用,例 : 验证码) 例 ; s2
swapcase ⼤⼩写互相转换
  • 例 ; s3
casefold 全部转换成⼩写
  • 和 lower 的区别: lower 有些字种不支持(转换不了), casefold 支持更广的字种 例 ; s2
title 每个隔开的首字母大写
  • 每个被特殊字符隔开的字⺟⾸字⺟⼤写, 首字母大写之后的转为小写 (下划线. 空格及其他) 例 print(s.title())
s = "alex is not a good man! Tory is a good man"
s1 = s.upper() # 全部转换成⼤写
s2 = s.lower()
s3 = s.swapcase()
print(s1) #打印出来是"ALEX IS NOT A GOOD MAN! TORY IS A GOOD MAN"
print(s2) #打印出来是"alex is not a good man! tory is a good man"
print(s3) #打印出来是"ALEX IS NOT A GOOD MAN! tORY IS A GOOD MAN"
print(s.title())   #打印出来是"Alex Is Not A Good Man! Tory Is A Good Man"

切割

center 扩充单位
s = "刘伟"
s1 = s.center(4,"*") # 把字符串拉长成4个单位 用*扩充
print(s1)  打印结果"*刘伟*"
strip 去空格 (常用)
  • 去掉左右两端空白,中间空白不去除 (用户输入内容都要去空白) ( '\n'是换行符,'\t'是tab制表符)
  • 能同时去掉(空白 . 空格. \n .\t . white space )
  • rstrip() 去掉右边空格 lstrip() 去掉左边空格
s = " \t       你好啊. 我叫赛利亚       "
print(s)   # 打印结果"   	       你好啊. 我叫赛利亚       "
s1 = s.strip() # 去掉空白
print(s1)  # 打印结果"你好啊. 我叫赛利亚"
s7 = "abcdefgabc"
print(s7.strip("abc")) # defg 也可以指定去掉的元素

扩展

import string
i = "Hello, how ? are, daddy's you ! "
a = i.translate(str.maketrans('', '', string.punctuation))
print(a)
# 打印结果  Hello how  are daddys you



replace(old, new) 字符串替换 (常用)
s = "alex_wusir_ritian_taibai_evaj_eggon"
s1 = s.replace("taibai", "taihei")
s2 = s.replace("i", "SB", 2)   # 把i替换成SB, 替换2个 按从左向右的顺序
print(s1)  # 打印结果alex_wusir_ritian_taihei_evaj_eggon
print(s2)  # 打印结果alex_wusSBr_rSBtian_taibai_evaj_eggon


split() 切割 (常用) 把字符串转化为列表
join() 加入 split的逆反 把列表转化为字符串 ,也可以遍历字符串
join 是遍历(迭代)方式添加

li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"]
s = "_".join(li)  
print(s)
li = "⻩花⼤闺⼥"
s = "_".join(li)
print(s)   # 打印结果 李嘉诚_麻花藤_⻩海峰_刘嘉玲


  • 打印结果是list(列表)
s9 = "alex,wusir,sylar,taibai,eggon"
lst = s9.split(",") # 字符串切割, 根据,进⾏切割
print(lst)  #打印结果 ['alex', 'wusir', 'sylar', 'taibai', 'eggon']
#坑
s11 = "银王哈哈银王呵呵银王吼吼银王"
lst = s11.split("银王") # 如果切割符在左右两端. 那么⼀定会出现空字符串.深坑请留意
print(lst)  #打印结果  ['', '哈哈', '呵呵', '吼吼', '']


查找

startswith() 开头
  • 判断是否以xxx开头 输出结果为 True or False
endtswith() 结尾
  • 判断是否以xxx结尾 输出结果为 True or False
count("a") 统计次数
  • 统计
  • 查找"a"出现的次数
find("sylar")
  • 查找'sylar'出现的位置 ( 如果没有返回-1)
index()
  • 求索引位置. 注意. 如果找不到索引. 程序会报错
isindex
  • 找到大写首字母

以上格式一样

s13 = "我叫sylar, 我喜欢python, java, c等编程语⾔."
ret1 = s13.startswith("sylar") # 判断是否以sylar开头
print(ret1)  # 打印结果 False


格式化输出

# 格式化输出
s12 = "我叫%s, 今年%d岁了, 我喜欢%s" % ('sylar', 18, '周杰伦') # 之前的写法
print(s12)
s12 = "我叫{}, 今年{}岁了, 我喜欢{}".format("周杰伦", 28, "周润发") # 按位置格式化
print(s12)
s12 = "我叫{0}, 今年{2}岁了, 我喜欢{1}".format("周杰伦", "周润发", 28) # 指定位置
print(s12)
s12 = "我叫{name}, 今年{age}岁了, 我喜欢{singer}".format(name="周杰伦", singer="周润发", age=28) # 指定关键字
print(s12)


条件判断

isalnum 是否由字⺟和数字组成
isalpha 是否由字⺟和中文 组成 (常用) **
isdigit 是否由数字组成, 不包括⼩数点
isnumeric 是否由数字组成, 不包括⼩数点
  • (这个⽐较⽜B. 中⽂都识别)
  • 输出结果都是 True or False
isdecimal 判断是不是十进制 用它来判断是不是阿拉伯数字 ***
s14 = "123.16"
s15 = "abc"
s16 = "_abc!@"
print(s14.isalnum())
print(s14.isalpha())
print(s14.isdecimal())


计算字符串的⻓度 len

  • len() 求长度. 内置函数
  • (注意: len()是python的内置函数. 所以访问⽅式也不⼀样. 你就记着len()和print()⼀样就⾏了)
s18 = "我是你的眼, 我也是a"
ret = len(s18) # 计算字符串的⻓度
print(ret)   # 打印结果 11


迭代 for

  • 存储类型的集合,如list , dict , tuple , set et: 在迭代时,不容许里面的元素位置发生改变,如需改变里面的数据,需用其他存储数据转移迭代对象
  • 字典在循环的时候可以修改,但不能删除

我们可以使⽤for循环来便利(获取)字符串中的每⼀个字符:

  • in有两种⽤法:
  • 在for中. 是把每⼀个元素获取到赋值给前⾯的变量.
  • 不在for中. 判断xxx是否出现在str中
for循环
    for 变量 in 可迭代对象:
         循环体(break, continue)
    else:
        当循环结束的时候执行else


# for 与 while 语句 对比:(各有利弊)
#  while : (循环. 死循环 .有索引)
s = "朱元璋朱棣12345"
count = 0
while count < len(s): # 遍历字符串的第一种办法
    print(s[count])
    count = count + 1

# for : (没有索引)
s = "朱元璋朱棣12345"
for count in s:
    print(count)  # 打印出结果是遍历变量"s"例的元素
print(count) ### 打印出变量最后一个元素(面试大坑)
 


s = "朱元璋朱棣12345"
for c in s:     # 遍历字符串的第二种办法
    print(c)


for 语句 可以 以 else语句收尾 , else 语句可以打印出来

s="321"
for c in s :
    print("倒计时%s秒"%(c))
else:
    print("出发!")
# 倒计时3秒
# 倒计时2秒
# 倒计时1秒
# 出发!


扩展: pass 和 ... 都是占位符

扩展:

用for 或者 while 便利元素,如果不想便,print(便利,end = ""),这样会打印出横向的

pint内运算会出现换行符

s = "123"
for i in s:
    print(i) # 打印出结果是纵向的"1""2""3"
    print(i) # 打印出结果是横向的"123"



posted @ 2019-06-02 00:14  樊xs  阅读(381)  评论(0编辑  收藏  举报