Python基础之数据类型

基本数据类型分类

分类一:
 
1、扁平序列
    这些序列只能容纳一种类型,存放的是值而不是引用
    例如:str、bytes、bytearray、memoryview和array.array
 
2、容器序列:
    这些序列能存放不同的类型的数据,存放的是他们所包含的任意类型对象的引用
    例如:list、tuple、collections.deque
 
3、区别:
扁平序列是一段连续的内存空间,由此可见扁平序列其实更加紧凑,但是里面只能存放诸如字符、字节和数值这种基础数据类型。
 
 
分类二:
 
可变序列:list bytearray array.array collections.deque和memoryview
 
不可变序列:tuple、str和bytes

1、int 整数

bit_length() 二进制长度

a = 5 # 二进制为101
print(a.bit_length())#3

2、str字符串

字符串是不可变的对象,所以任何操作对原字符串不会产生影响。

(1)索引,就是下标,从0开始,最大值是字符串长度-1

s = "abcdddd"
print(s[5]) #格式:字符串[索引下标]

(2)切片,使用下标来截取部分字符串

    语法:str[start:end:step]

    原则:顾头不顾尾

    step:步长,如果是整数,则从左到右取,如果是负数,从右向左取 

s = "ABCDEFGHIJKL"
#切片
print("从头到尾:%s"%(s[0:]))  #从头到尾
print("取中间的一部分:%s"%(s[0:3])) #顾头不顾尾
print("跳着取:%s"%(s[0:6:2])) #间隔一个取
print("反向从头到尾:%s"%s[::-1])  #-1代表从后向前取
print("反向截取一部分:%s"%(s[-1:-5:-1]))
print("反向跳着截取:%s"%(s[-1:-5:-2]))
View Code

(3)字符串转换大小写

s = "LiangYing"
print(s.capitalize()) #整句首字母大写
print(s.lower())   #全部小写
print(s.upper())  #全部大写
print(s.swapcase()) #大小写翻转
print(s.title())#除了以字母之外的字符隔开 ,每个单词首字母大写

应用:验证码

#验证码不区分大小写
text = input("请输入验证码:")
if text.upper() == "aqPt".upper():
   print("验证码输入正确")

(4)切片

#居中 拉长到16字符,并以*填充
s = "liangying"
print(s.center(16,"*")) # ***liangying****

#更改tab的长度,默认更改为8
s_1 = "al	ex wusir"
print(s_1.expandtabs()) #al      ex wusir

#去空格
s_2 = "  liang ying  "
print(s_2.strip()) #去掉头尾的空格
print(s_2.lstrip()) #去掉左边的空格
print(s_2.rstrip()) #去掉右
居中 拉长到16字符,并以*填充
s = "liangying"
print(s.center(16,"*")) # ***liangying****

#更改tab的长度,默认更改为8
s_1 = "al	ex wusir"
print(s_1.expandtabs()) #al      ex wusir

#去空格
s_2 = "  liang ying  "
print(s_2.strip()) #去掉头尾的空格
print(s_2.lstrip()) #去掉左边的空格
print(s_2.rstrip()) #去掉右边的空格

#strip()也可以去掉指定的字符串
s_3 = "liang123ying123"
print(s_3.strip("123")) #liangying

#字符串替换
print(s_3.replace("123","huang"))
print(s_3.replace("123","**",1)) #把123换成**,换1次
#字符串切割
print(s_3.split('i'))  #切割的结果是个list
print(s_3.split('i',1)) #1指的是切割一次

#如果切割依据在头或者尾,可能会出现空字符串
应用:模拟用户登录,忽略用户输入的空格
username = input("username:").strip()
password = input("password:").strip()
if username == "liang" and password == "123":
    print("succeed")

(5)查找

s = "liangying"
print(s.find("yi")) #查找yi出现的位置,没有的话返回-1
print(s.find("yi",0,5)) #从下标0到5,查找yi
print(s.startswith("li")) #判断字符串是否以li开头
print(s.endswith("ng")) #判断字符串是否以ng结尾
print(s.index("i")) #找索引,找不到报错
s.count("要查找的目标字符串") 返回查找到的个数

(6)条件判断

s = "123liangying&&"
print(s.isalnum()) #判断字符串是否由字母或数字组成
print(s.isnumeric()) #是否由数字组成,识别壹贰中文
print(s.isdigit())#也是数字,不如上面的强大
print(s.isalpha())#是否以字母组成

应用:用算法判断某一个字符串是否是小数

#判断一个字符串是否是小数

while True:
    text = input("请输入字符串:")
    text = text.replace("-","") #以防出现负数,先替换掉
    if text.count('.') == 1 and not text.startswith('.') and not text.endswith('.'):
    #小数一定有小数点  不以小数点开头 不以小数点结尾
        lis = text.split('.') #用小数点进行分割 因为只有一个小数点,所以肯定分割成两部分
        if len(lis) == 2 and lis[0].isdigit() and lis[1].isdigit(): #分割成的两部分都是数字
            print("小数")
            break
    else:
        print("肯定不是小数")

(7)计算字符串的长度

len(str) 内置函数

(8)迭代

#遍历字符串 - 1
s = "liangying"
for i in s:
    print(i)

# - 2
index = 0
while index <= len(s)-1:
    print(s[index])
    index += 1

3、bool 布尔值

判断真假,True False

转换问题:

0是False 非0是True int(bool) True是1, False是0

str => bool bool(str) 空字符串是False, 不空是True
bool => str str(bool) 把bool值转换成相应的"值"
原文地址:https://www.cnblogs.com/liangying666/p/9122568.html