python之路day03,基本数据类型详解

整数类型

在python当中整数类型都是int

a = 123

这个a就是int类型,需要注意的是:在python2当中int类型是有一个范围值,超过这个范围会自动变为long类型
在python3当中int类型的值是没有范围,多大范围都是int类型.

数字 int

b = "123"
a = int(b)
c = 1000
print(a+c)

如果一个有一个字符串的变量类型,我们可以使用int()的方法强制转换这个类型,但是前提是字符串里面的必须是数字.
使用type()可以查看数据类型,在括号里面输入B的话,输出的结果是<CLASS"str">

b = 123
print(b.bit_length())

int类型的方法,bit_length(),数字转换为二进制,有几位二进制数就输出几位,如果前面是0则忽略

字符串 str

test = "XGZ"
print(test.center(20,"-"))

输入的内容恰好是;--------XGZ---------
意思是:前后十个位置,XGZ放在中间,这个方法是两个参数,后面的那个参数可以不用传,如果传了的话,就用传的内容替换空格位置的内容.

test = "XGZZ"
v = test.count("Z")
print(test.count("Z"))
print(type(v))

count方法是查看所输入的参数字符出现的次数,这个方法后面还有个切片功能,就是说可以检测一个字符串中从第几个字母开始第几个字母结束,这个字母在这个范围当中出现了多少次.这个方法返回的其实是个int类型的值

test = "XGZZ"
v = test.endswith("Z")
v1 = test.startswith("Z")
print(test.endswith("Z"))
print(type(v1))
结果:
True
<class 'bool'>

这个方法的意思是:以什么开头以什么结尾,参数里面可以传字符也可以传字符串.
这个方法返回的值是个bool类型.

test = "XGZZ"
v = test.find("Z")
print(v)
print(type(v))
运行结果是:
2
<class 'int'>

这个方法是找到某个字符或者某个字符串在第几个位置,从左到右开始找.
返回的是一个int类型
这个方法,后面还有两个可用参数,不过可以不传,这两个参数的意思是从字符串的第几个开始找到第几个结束.

test = "I am {name},i am form {Country}"
name = test.format(name = "xieguangzhi",Country = "china")
print(test)
print(name)
print(type(name))
print(test.format_map({"name": "zhoujeilun","Country" : "ChinaTaiwan"}))
输出结果:
I am {name},i am form {Country}
I am xieguangzhi,i am form china
<class 'str'>
I am zhoujeilun,i am form chinaTaiWan

格式化,将一个字符串中的占位符替换为指定的字符串
这个方法的意思是:首先我们创建的一个字符串必须含有{},而且括号里面必须有字符串
然后调用format方法,name=“任意字符串”,这里输出的才是i am …而且,后面不仅可以传一个参数,可以传多个.原理同代码一样.
这个方法返回的是一个str类型.
format_map和这个功能一样,但是用法有点区别,大家可以从代码中找出区别.

test = "xidada123"
print(test.isalnum())
输出结果:True

这个方法的意思是:test字符串当中是否包含字母和数字,有任意一个都返回为true.
返回的值是布尔类型

test = "username\tE-mail\tpassword\nztwsxgz\[email protected]\tngsbjgwdmm0870\nztwsxgz\[email protected]\t123"
print(test)
print(test.expandtabs(20))
输出结果是:
username	E-mail	password
ztwsxgz	[email protected]	ngsbgwdmm0870
ztwsxgz	[email protected]	123
username            E-mail              password
ztwsxgz             [email protected]    ngsbgwdmm0870
ztwsxgz             [email protected]    123

expandtabs这个方法就是对齐,并且在换行的时候如果你填的是二十那么就把20个空格分配在分隔符里面达到对齐的目的,通过输出结果大家可以看到加了方法是什么效果,不加方法是什么效果

test = "zhoujeilun"
print(test.isalpha())
test = "zhoujielun123"
print(test.isalpha())
输出结果是:
True
False

这个方法是检测字符串里面是否是字母或者汉字,是的话就输出true,否则false

test = "12"
print(test.isdecimal())
test = "123"
print(test.isdigit())
print(test.isnumeric())
输出结果:True
True
True

输出的结果既然都是true那么这三个方法是否什么区别吗?
isdecimal():如果S中只有十进制字符,则返回True,否则为False。
isdigit():如果S中的所有字符都是数字,并且在S中至少有一个字符,则返回True。
isnumeric():如果S中只有数字字符,则返回True,否则为False。
总结:
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节)
False: 汉字数字,罗马数字,小数
Error: 无

isdecimal()
True: Unicode数字,全角数字(双字节)
False: 罗马数字,汉字数字,小数
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 小数
Error: byte数字(单字节)

test = "zhou\tjie\tlun\t"
print(test.isprintable()) #判断是否有不可显示的字符, 如果没有就是显示true,如果有就显示false
test = "zhoujielun"
print(test.isspace())#这个方法的意思是判断字符里面是否全部都是空格,并不是包含空格,如果全部都是空格就输出true,否则false
test = "zhou jie lun"
print(test.title())
v = test.title()#这个方法的意思是把一串英文单词含有空格的英文单词转换为所有首字母大写
print(v.istitle())#这个方法是判断字符串是不是一个标题,因为标题都是首字母大写的.
test = "你是风儿我是沙"
print(test.join("哈哈哈"))#输出结果:哈你是风儿我是沙哈你是风儿我是沙哈
print(test.join("哈哈"))#输出结果:哈你是风儿我是沙哈
print(test.join("哈"))#输出结果:哈
v = " "
print(v.join(test))#输出结果:你 是 风 儿 我 是 沙,这个才是正规用法,
test = "Jay"
print(test.ljust(20,"$"))#输出结果:Jay$$$$$$$$$$$$$$$$$
print(test.rjust(20,"$"))#输出结果:$$$$$$$$$$$$$$$$$Jay

上面放的R和L代表的英文左边右边的首字母.20是增加的字符个数,"$"增加什么字符,任意

test = "ZHOUJIELUN"
print(test.lower())

将字符串转换成小写. 反向方法是:isupper判断是否是大写,upper将字符串转换成大写.

test = " ZhouZjieZlunZ "
print(test.lstrip())
print(test.rstrip())
print(test.strip())

这个方法是处理左边或右边或者两边的空格 或者特定字符的方法.就是可以默认删除空格,也可以传参数"字符串或者字符都可以",不仅可以默认移除空白,还可以移除换行.

字符串分割

test = "asdadjjfjfdsjkfad"
print(test.partition("s"))#输出结果:('a', 's', 'dadjjfjfdsjkfad')
print(test.rpartition("s"))#输出结果:('asdadjjfjfd', 's', 'jkfad')
print(test.split("s"))#输出结果:['a', 'dadjjfjfd', 'jkfad']
print(test.split("s",1))#输出结果:['a', 'dadjjfjfdsjkfad']
print(test.rsplit("s",2))#输出结果:['a', 'dadjjfjfd', 'jkfad']
test = "asdasda\nadasdasd\nasdasdas\n"
print(test.splitlines())#输出结果:['asdasda', 'adasdasd', 'asdasdas'],根据换行符来进行分割
//////////////////////////////////
test = "asdasdasd"
v = test.swapcase()
print(v)
v = v.swapcase()
print(v)
#大小写转换,如果是大写就转换成小写,反之亦然

以上字符串的方法基于python3.6 必须掌握的:join,split,upper,lower,find,strip六个方法

test = "ZhouJieLun"
test1 = test[0]#这里的0代表索引下标,获取的是Z
test2 = test[0:3]#这里的0和1代表的是索引范围,指的是你要获取的范围字符0-1
print(test1,test2)

text = "abcabcacaca"       
print(text.replace("bc","23",1))
print(text.replace("bc","23",2))
# 输出结果:
# a23abcacaca
# a23a23acaca

这个是修改指定的字符串,后面的数字是修改几个.

v = len(test)
print(v)
查看字符串有多少个字符,V是int类型

遍历字符串的两种方法:

test = "人生苦短我学python"
index = 0
while index < len(test):
    print(test[index])
    index += 1
print("-----------")

for python in test:
    print(python)
test = range(100)
for item in test:
    print(item)
test = range(0,100,5)
for item in test:
    print(item)

输出是没隔5输出一次,0,5,10,15,20,25…
range方法用来创建一个连续的数,0-100,范围是>=0,<100

# test = input(">>>>")
# num = len(test)
# index = range(0,num)
# for num  in index:
#     print("这是索引;",num,"这是对应的文字",test[num])

test = input(">>>>")
for index in range(0,len(test)):
    print("这是索引;",index,"这是对应的文字",test[index])

输出索引和对应索引的字符
这里有几个对于字符串的练习题:

题目是:计算机用户输入内容,然后我们来判断用户输入了几个字母和几个十进制数字.

content = input("请输入任意字符")
number = 0   #定义两个用来计数的容器
letter = 0
for item in content: #for循环遍历出每一个字母
    if item.isdecimal(): #对每一个字母进行判断
        number+=1
    else:  #一个字符串当中不是数字就是字母
        letter+=1
print(number,letter)

列表List

list是一个类,而我们创建一个list的变量时其实就相当于创建了一个对象.

li = ["age",1,2,3,4]

列面里面的元素可以数字,列表,字符串,布尔值
列表里面还可以嵌套列表,:例如:

li = ["age",1,2,3,4,["name",1,2,3]]

列表的元素可以被修改,在内存当中是链表结构,修改元素不会在内存当中开辟多余的空间.

li = ["age",1,2,3,4,["name",1,2,3]]
li[1] = 3
print(li[1])
li = ["age",1,2,3,4,["name",1,2,3]]
li[5] = ["adsa",1,7,8,6,6]
print(li[5])

这样修改也可以的

删除操作:

li = ["age", 1, 2, 3, 4, ["name", 1, 2, 3]]
del li[2] #删除索引为2的元素

批量修改

li = ["age", 1, 2, 3, 4, ["name", 1, 2, 3]]
li[1:2] = ["2","abcde"]

for循环

li = ["age", 1, 2, 3, 4, ["name", 1, 2, 3]]
li[1:2] = ["2","abcde"]
for item in li :
    print(item)

支持in操作

li = ["age", 1, 2, 3, 4, ["name", 1, 2, 3]]
li[1:2] = ["2","abcde"]
print("age" in li )

通过索引找值

li = ["age", 1, 2, 3, 4, ["name", 1,["a"] ,2, 3]]
print(li[5][2][0])

将字符串转换成列表时:

string = "sajdkasdasljdklasd"
a = list(string)
print(a) #进行字符串转换时调用的是内部的for循环,转换int类型会报错.把每一个字符当成一个列表里面的元素
输出结果:['s', 'a', 'j', 'd', 'k', 'a', 's', 'd', 'a', 's', 'l', 'j', 'd', 'k', 'l', 'a', 's', 'd']

把列表里面的数字和字符串转换成一条字符串

li = ["qw3","asdasd",12,345]
s = ""
for i in li :
    s = s + str(i)
print(s)

如果一个列表全部都是字符串,也可以用join这个方法很简便的把列表列表转换成字符串

li = ["qw3","asdasd","234","123"]
v = "".join(li)
print(v)

总结:列表里面如果有数字和字符串时 需要我们自己写for循环,转换成字符串
如果只有字符串直接用join方法就可以了

接下来要说的是列表的方法:

li = [1,2,3,4,5,6]#我们可以直接append增加,而不用从新创建一个变量去记住它 
li.append(89)
li.append([819203,1234])#直接在列表里面追加列表也是可以的
print(li)

以下是列表的两个方法:copy和count

li = [1, 2, 3, 4, 5, 6]
li1 = li.copy()  # 浅拷贝
print(li.count(5))  # 这里必须传参数,计算括号内的参数在列表中出现的次数
print(li1)

append是追加元素,而extend可以追加一个列表,把列表里面的元素通过FOR循环一个个添加到里面,它要求传的参数也是可迭代对象(可以被for循环的对象)

li = [1, 2, 3, 4, 5, 6]
li.extend([5,5,8])
print(li)

index()方法,是返回所传参数在列表当中的索引值
insert()在指定的索引位置插入指定的值,注意:是插在指定索引的前一个位置例如插在0,那么你插的值的索引位置就是0,传两个参数,第一个是索引值,第二个是要插入的值

pop方法默认删除最后一个值,也可以根据所传索引的值去删除,并且删除被的值可以设置一个变量获取到.
remove()方法也是删除一个值,不过必须传参数,参数就是你要删除的值,(这里和pop的区别在于,pop传的是索引值,而remove传的是要删除的值)

li = [1, 2, 3, 4, 5, 1]
v= li.pop()
print(v)
print(li)

反转reverse()

li = [1, 2, 3, 4, 5, 1]
li.reverse()
print(li)

sort排序

li = [4, 2, 3, 4, 7, 1]
li.sort()
print(li)
输出结果:[1, 2, 3, 4, 4, 7]
li.sort(reverse=True)#这是倒序

元组tuple

元组:一级元素不可被修改,不能被增加或者删除(如果元素里面有列表,列表里面的值是可以修改的)
创建元组的时候一般在后面加一个逗号和方法区分开.
元组也可以进行索引取值和切片

tu = (123, "123", 43, [123, 45, 3], 1231)
v1 = tu[1]
v2 = tu[2:4]
print(v1)
print(v2)

可以使用for循环迭代

tu = (123, "123", 43, [123, 45, 3], 1231)
for i in tu:
    print(i)

字典 dict

字典的value可以是任何类型,列表,字典不可以作为字典的key
字典是无序的

#字典,键值对
info = {"k1":"v1","k2":"v2"}

通过键找值,并复制给V

v = info["k1"]
print(v)

字典可以删除键值对

info = {"k1":"v1","k2":('123',123)}
del info["k1"]
print(info)

fromkeys()方法根据key创建字典,并指定一个值,

info = {"k1":"v1","k2":('123',123)}
v = dict.fromkeys(["1",2,"123"],99)
print(v)

get()方法,是根据键获取值,如果键不存在,打印None,也可以在键的后面再传一个参数,给前面的这个键赋值.

info = {"k1":"v1","k2":('123',123)}
v= info.get("k1")
print(v)

d = info.get("k11111",5)
print(d)

根据键删除键值对,并且用一个变量记住所删除键对应的值

info = {"k1":"v1","k2":('123',123)}
d = info.pop("k1")
print(d)
print(info)

设置值,如果已经存在就获取,如果不存在就添加所设置的键值对,并获取这个新键值对的值

info = {"k1":"v1","k2":('123',123)}
d = info.setdefault("k111",213)
print(d)

更新,update()方法,键值对存在就根据键去修改值,如果键值对不存在就创建.类似于更新一个软件或者程序,有则改,无则加

info = {"k1":"v1","k2":('123',123)}
info.update({"k1":"1254","k2":123,"k3":109})第一种写法
print(info)

info.update(k1=123,k4="abc")第二种写法
print(info)

敏感词过滤系统’

li = ["123","456","789"] #这里创建一个列表包含敏感词
input_date = input("请输入内容")#这里是用户输入的内容                                  
for item in li:
    if item in input_date:
        input_date = input_date.replace(item,"***")
print(input_date)

猜你喜欢

转载自blog.csdn.net/ztwsxgz/article/details/82740545
今日推荐