第五章、基本数据类型(int、str)

一、数字 :int 在python3中所有整型不管数字有多大,它都是int类型

 

************int的用法*****************

1.1 将字符串转换成数字

a="1234"
print(type(a),a) #type是查看变量的数据类型
b=int(a)
b=b+1000
print(type(b),b)

1.2 将二进制转换成十进制

num="0011"
v=int(num,base=2)
print(type(v),v)

1.3 将十六进制转换成十进制

p1="a"
p2=int(p1,base=16)
print(type(p2),p2)




*******另一种书写方法********

p4 = int(input(">>>:"))
print("十进制的数为:",p4)
print("转换为二进制:",bin(p4))
print("转换为八进制:",oct(p4))
print("转换为十六进制:",hex(p4))

"""输出结果

>>>:10
十进制的数为: 10
转换为二进制: 0b1010
转换为八进制: 0o12
转换为十六进制: 0xa
"""





*****bit_length(表示当前数字的二进制是用多少位来表示)的用法******


p1=1
print(p1.bit_length()) #返回结果是:1 因为二进制是:1

p2=2
print(p2.bit_length()) #返回结果是:2 因为二进制是:10

p3=3
print(p3.bit_length()) #返回结果是:2 因为二进制是:11


p4=4
print(p4.bit_length()) #返回结果是:3 因为二进制是:100



 

二、字符串 str 

 

2.1 capitalize()函数是把首写字母改成大写


test="yuxianming"
v=test.capitalize()
print(v) #返回的结果是:Yuxianming


2.2 casefold()函数是把大写字母全部改写成小写


test1="XUHONGMEI"
v1=test1.casefold()
print(v1) #返回结果:xuhongmei

2.2.1 lower 函数是把大写字母全部改写成小写 但casefold更牛逼,因为lower只能处理简单的事务,casefold可以处理比较复杂的对应变小写

test100="YuXianMing"
v100=test100.lower()
print(v100)

2.2.1.1 islower 判断字符串是否全部是小写,如果是返回True 否则就是返回False

test201 = "Alex_yuxianming"
v201 = test201.islower()
print(v201) #返回 False


test202 = "alex_yuxianming"
v202 = test202.islower()
print(v202) #返回 True



2.2.1.2  upper 把字符串全部改成大写


test202 = "Diskpart_xuhongmei"
v202 = test202.upper()
print(v202) #返回结果:DISKPART_XUHONGMEI




2.2.1.3  isupper 判断字符串是不是全部是大写,如果是返回 True ,否 返回 False


test203 = "disk_xuhongmei"
v203 = test203.isupper()
print(v203) #返回结果:False



test204 = "DISK_PART"
v24 = test204.isupper()
print(v24) #返回结果:True



2.2.2 swapcase 大小写相互转换

test101 = "Python_Diskpart"
v101 = test101.swapcase()
print(v101) #返回结果:pYTHON_dISKPART


2.3 center 返回字符串以一串长度宽度为中心。 填充是使用指定的填充字符完成(默认为空格)其中width是必备参数

"""
def center(self, width, fillchar=None): # real signature unknown; restored from __doc__
其中width是必备参数
S.center(width[, fillchar]) -> str

Return S centered in a string of length width. Padding is
done using the specified fill character (default is a space)

"""

test2="yuxianming"
v2=test2.center(20,"*")
print(v2) #返回结果: *****yuxianming*****




2.3.1 rjust 把内容放在右边,填充放在左边


test204 = "disk"
v24 = test204.rjust(20,"*")
print(v24) #返回结果:****************disk



2.3.2 ljust 把内容改在左边,填充放在右边


test205 = "disk"
v25 = test205.ljust(20,"*")
print(v25) #返回结果:disk****************


2.3.3 zfill 把内容放到右边,左边只能用0填充,切记:不能指定字符填充


test206 = "disk"

v26 = test206.zfill(20)
print(v26) #返回结果:0000000000000000disk



2.4 count 返回子字符串sub(子集)中不重叠的次数字符串S [开始:结束],可选参数的开始和结束是解释为切片符号


test3="diskpartd"
v3=test3.count("d") # 统计"d"在字符串中出现的次数
print(v3) # 返回的结果 2

2.4.1 count [开始:结束],可选参数的开始和结束是解释为切片符号


test4="yuwenshuxueyingyu"
v4=test4.count("y",3,-1) #统计"y"在 3和-1之间出现的次数
print(v4) #返回的结果是:2


2.5 endswith() 函数判断以什么来结尾........返回的结果有两种结果:False和True


test5="diskpart"
v5=test5.endswith("t")
print(v5) #返回的结果:True



2.5.1 startswith 函数判断以什么来开始........返回的结果有两种结果:False和True


test101="diskpart_test101"
v101=test101.startswith("di")
print(v101) #返回的结果:True

v102=test101.startswith("yu")
print(v102) #返回的结果:False  
 

2.6 expandtabs 返回字符串的副本,其中所有制表符都使用空格扩展,如果未提供制表符,则假定制表符大小为8个字符

2.6.1 第一种写法


test7="yuxian\ting"
v7=test7.expandtabs() #expandtabs() 如果默认为空,制表符(\t)大小为8个字符
print(v7) #输出的结果:yuxian ing 解释输出结果:从y开始计数一直数到\t,不够8个字符则用空格填充,所以这个示例有2个空格

2.6.2 第二种写法

test6="user_name\tpassword\temail\nxuhongmei\t1234\t23234234@qq.com\nyuxianming\t90980\t840610930@qq.com\n"
v6=test6.expandtabs(20)
print(v6)
输出的结果:
user_name password email
xuhongmei 1234 23234234@qq.com
yuxianming 90980 840610930@qq.com


2.7 find()

"""
方法检测字符串中是否包含子字符串 str ,
如果指定 beg(开始) 和 end(结束)
范围,则检查是否包含在指定范围内,
如果指定范围内如果包含指定索引值,
返回的是索引值在字符串中的起始位置。
如果不包含索引值,返回-1
"""
test7="yuxianming python"
test8="py"
v7=test7.find(test8)
print(v7) #返回结果:11 因为"py"在test7中索引值是11

#第二种案例 找不到"子字符串" 返回 -1

test9 = "diskpart"
test10 = "at"

v8 = test9.find(test10)
print(v8) #返回结果:-1

test102="yuxianing_diskpart"
v102=test102.find("ing",1,11) #其中的关系是 大于或等于1 小于11
print(v102) #返回结果是:6



2.7.1 index #未找到会报错,而 find 会返回-1不会报错


test103="yuxianming_diskpart"
test104="ws"

v103 = test103.index(test104)
print(v103) #返回: ValueError: substring not found




2.8 format 格式化将字符串中占位符替换为指定值



test11 = "My name is {name}, and I am {age} years old"

v9 = test11.format(name="yuxianming",age=19)

print(v9)

test12="I like to drink {1} in the morning and read {0} in the evening."
v12=test12.format("看书","牛奶")
print(v12)



2.9 format_map 没有学




2.10 isalnum :字符测试是否字母和数字 ,如果字符串中的所有字符都是字母或者是数字,返回True,否则返回False


test13 = "pythontest123"
v13 = test13.isalnum()
print(v13) #返回结果: True

test14 = "python_test12"
v14 = test14.isalnum()
print(v14) #返回结果:False 因为里面包含了下划线(_)




2.11  isalpha : 测试字符是否是字母,如果字符串全是字母返回结果是True ,否则返回False


test14 = "yuxianming"
v14 = test14.isalpha()
print(v14) #返回结果:True 因为字符串里面全是字母

test15 = "diskpart_yuxianming"
v15 = test15.isalpha()
print(v15) #返回结果:False 因为里面包含了下划线(_)




2.12 isdecimal,isdigit, isnumeric检查字符串是不是数字,但isdigit更牛逼,它可以检测特殊字符串,其中isnumeric可以判断大写的"二"是不是数字



test16 = "12342"
v16 = test16.isdecimal() #返回的的结果是:True
v17 = test16.isdigit() #返回的的结果是:True
print(v16,v17)


test17 = "②"
v18 = test17.isdecimal() #返回的的结果是:False
v19 =test17.isdigit() #返回的的结果是:True
print(v18,v19)



2.13 isnumeric 可以判断大写的"二"是不是数字


test19 = "二"

v20 = test19.isdecimal()
v21 = test19.isdigit()
v22 = test19.isnumeric()
print(v20,v21,v22) #返回的结果是:False False True


2.14 isidentifier用字母、数字、下划线来创建变量名,数字不能开头,只要认为是这三种就是一个"标示符"



test18 = "yuxianming"
v18 = test18.isidentifier()
print(v18)


2.15 isprintable 如果字符串中所有的字符是真实存在的,返回True ,相反如果字符串中可打印的是空的,比喻制表符(\t),那就是假的,返回False。


test21 = "yuxianming_diskaprt"
v24 = test21.isprintable()
print(v24) #返回的结果: True




test22 = "yuxianming\tdiskpart"
v22 = test22.isprintable()
print(v22) #返回的结果:False 因为字符串中包含了制表符 \t 所以返回False



2.16 isspace 如果字符串中的所有字符都是空格,返回True,否则就返回False

 


test23 = " "
v23 = test23.isspace()
print(v23) #返回的结果: True


test24 = " isspace"
v24 = test24.isspace()
print(v24) #返回的结果:False 因为字符串中不仅有空格,还有其它字符串


 

2.17 istitle 判断标题中的字符串首字母是不是都是大写,如果是返回False 否则 返回True

 


test25 = "My name is li yang"
v25 = test25.istitle()
print(v25) #返回的结果:False 因为除了第一个M是大写,其它的字符串都是开头都是小写,所以返回的是False

test26 = "My Name Is Li Yang"
v26 = test26.istitle()
print(v26) #返回的结果: True

 

 

2.17.1 title 它把字符串转换成标题的样式,说白了就是把每一个字符串的首写字母改成大写的;

 


test27 = "My name is li yang"
v27 = test27.title()
print(v27) #返回的结果是:My Name Is Li Yang,它把字符串转换成标题的样式,说白了就是把每一个字符串的首写字母改成大写的;
 

2.18 join 把字符串中的每个元素,按照指定的分隔符拼接起来,也可以说是把字符串中的每一个元素按照指定的分隔符拆分出来; 


test28 = "我叫DISKPART"
test29 = ","
v28 = ",".join(test28)
print(v28) #返回的结果是:我,叫,D,I,S,K,P,A,R,T




第二中写法

test30 = "我叫DISKPART"
v29 = " * ".join(test30)
print(v29) #返回的结果是:我 * 叫 * D * I * S * K * P * A * R * T


 

2.19 strip 去除字符串两边的空格


test31 = " diskpart "
v31 = test31.strip()
print(v31)

 

 

2.19.1 lstrip 去除字符串左边的空格,还可以移除左边的换行符\n 和制表符\t

 


test32 = " diskpart "
v32 = test32.lstrip()
print(v32)



test34 = "\n diskpart" #去除左边换行符操作
print(test34)
v34 = test34.lstrip()
print(v34)

 

 

2.19.2 rstrip 去除字符串右边的空格

test33 = " diskpart  "
v33 = test33.rstrip()
print(v33)

 

2.19.3 去除左边指定字符


test34 = "iskpartyuxianming"
v34 = test34.lstrip("yuxianingidskpart")
print(v34) 

 

2.19.4 去除右边指定字符

 


test35 = "iskpartyuxianming"
v35 = test35.rstrip("yuxianngidskpart")
print(v35) #返回结果:iskpartyuxianm


test36 = "iskpartyuxianmng"
v36 = test36.rstrip("yuxianngidskpart")
print(v36) #返回结果:iskpartyuxianm


2.20 maketrans,translate 这两个函数是对应

test37 = "diskpayuxiewqerrwqejrwe;uxyooswoi;xudo3qd"
m = str.maketrans("yuxianming","1234567890")
new_v = test37.translate(m)
print(new_v) #返回结果:d8skp51238ewqerrwqejrwe;231ooswo8;32do3qd



test38 = "oiuouwqoeroiuo2oxyuio;houoe23d;mleali"
m1=str.maketrans("xuhongmei","094321567")
new_v2 = test38.translate(m1)
print(new_v2) #返回结果:37939wq36r3793230y973;4393623d;5l6al7



 


2.21 partition 以指定字符来分割字符串,最多可以分割为3部分,且只有一个参数,而且保留分割字符


 

test39 = "diskspart"
v38 = test39.partition("s")
print(v38) #返回结果:('di', 's', 'kspart')



2.21.1 rpartition 从右往左分割字符串,遇到第1个s开始分割;


 

v39 = test39.rpartition("s")
print(v39) #返回结果: ('disk', 's', 'part')


v40 = test39.split("s")
print(v40) #返回结果: ['di', 'k', 'part']

v41 = test39.split("s",1)
print(v41) #返回结果:['di', 'kspart']

 


2.21.3  rsplit 从右往左分割,且可以指定参数,且不保留指定字符

v42 = test39.rsplit("s",1)
print(v42) #返回结果:['disk', 'part']

 
"""

后面学到正则表达式可以把 split、partition这两个函数替代掉,也就是说正则是这两个参数的合集
同时正则可以自定义分割的元素;

"""



 

2.22 splitlines 自动指根据换行符\n来分割字符串2.23 replace 替换字符


test40 = "sidasdjfdsajf\nwerpwierpiw\nwqerwpqierasdfasdf"
v43 = test40.splitlines()
print(v43) #返回结果:['sidasdjfdsajf', 'werpwierpiw', 'wqerwpqierasdfasdf']


v44 = test40.splitlines(True) #加参数True 会把换行符打印出来
v45 = test40.splitlines(False) #默认参数是False 不会把换行符打印出来
print(v44) #返回结果:['sidasdjfdsajf\n', 'werpwierpiw\n', 'wqerwpqierasdfasdf']
print(v45) #返回结果:['sidasdjfdsajf', 'werpwierpiw', 'wqerwpqierasdfasdf']




2.23 replace 替换字符



test41 = "python_yuxinanming"
v41 = test41.replace("py","ceshi") #用"ceshi"把"py"替换掉
print(v41) #返回结果:ceshithon_yuxianming

v42 = test41.replace("in","zz",1) #替换1个in
print(v42) #返回结果:python_yuxzzanming

v43 = test41.replace("in","zc",2) #替换2个in
print(v43) #返回结果:python_yuxzcanmzcg



"""最常用的字符串7个最常用的魔法

1. join

2. split

3. find

4. strip

5.upper

6.lower

7.replace

"""



"""4个灰魔法

1. 切片

2. 索引

3. len()

4. for


"""


""" 1个深度魔法

字符串一旦创建就不能修改

一旦修改或拼接就会造成重新生成字符串


"""



索引 、下标 获取字符串中的某一个字符

test41="diskpart_test"

v41 = test41[1] #下标1对应的字符是i
print(v41) #返回结果: i


连续取多个字符,也就是字符串"切片"

v42 = test41[3:9] #下标3到9对应的字符是:kpart_ 其中下标9是不算的;
print(v42) #返回结果:kpart_

v43 = test41[-3:-1]
print(v43) #返回结果:es


2.24  len函数使用方法 : 获取当前字符串中有几个字符组成



test42 = "diskaprt"
v42 = len(test42)
print(v42) #返回结果:8



test43 = "我是一名Python爱好者"

count = 0
while count < len(test43):
v = test43[count]
print(v)
count = count+1



2.25  for 循环 有两个魔法(break 和 continue)

 

举例:2.1 break 跳出整个循环,并且不会执行else里面的语句
h = 1
while h < 10:
   print(h)
   h+=1
   if h==5
      break
解释:2.1(当h=1时  那么1 < 10  此时输出1,然后h=h+1也就是1+1 判断条件是:当h加到等于5时就跳出整个循环(break))



举例:2.2 continue 跳出本次循环
a  = 1
while a < 10:
    a+=1
    if a == 5:
        continue
    print(a)
	
解释 2.2 (当 a=1时  那么 a<10条件成立 在接着 a=a+1(也就是a=1+1),判断条件是:当a加到等于5时就continue(continue的意思是跳过5),然后在输出a)






三 . 作业需求

 
""" 输出结果:
请输入>>>>>:yuxianming
0 y
1 u
2 x
3 i
4 a
5 n
6 m
7 i
8 n
9 g


"""




****************str全部学完*******************








 





 

2.20 maketrans,translate 这两个函数是对应使用

posted @ 2018-06-25 14:12  喻先明  阅读(728)  评论(0编辑  收藏  举报