python_day3(字符串)
数据类型
什么是数据类型?
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型有多种,今天我们暂只讲3种, 数字、字符串、布尔类型
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
各种数据类型的简介
int:1,2,3主要用于计算
bool:Ture,False,主要用于判断
str:存储少量数据,进行一系列操作;
list:列表,[],用中括号括起来,百万级甚至上亿级的元素,每个元素和元素之间以逗号隔开
元组:由()为标志,可以存储大量元素,但是和list的区别是元组是只读权限,只能读取,不能更改。
字典:{},比如{’name‘:'云姐'},也可以储存大量的数据,但是存储的都是关系型数据;比如{'Tom':[tom的各种信息]},这样就能储存大量数据。
集合:也是用{}表示,{1,2,3,24,52,‘asd’},和高中学习的集合性质类似,实际工作中用的较少;
字符串常用方法
#captalize,swapcase,title print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 msg='taibai say hi' print(msg.title()) #每个单词的首字母大写 # 内同居中,总长度,空白处填充 ret2 = a1.center(20,"*") print(ret2) #数字符串中的元素出现的个数。 # ret3 = a1.count("a",0,4) # 可切片 # print(ret3) a4 = "dkfjdkfasf54" #startswith 判断是否以...开头 #endswith 判断是否以...结尾 # ret4 = a4.endswith('jdk',3,6) # 顾头不顾腚 # print(ret4) # 返回的是布尔值 # ret5 = a4.startswith("kfj",1,4) # print(ret5) #寻找字符串中的元素是否存在 # ret6 = a4.find("fjdk",1,6) # print(ret6) # 返回的找到的元素的索引,如果找不到返回-1 # ret61 = a4.index("fjdk",4,6) # print(ret61) # 返回的找到的元素的索引,找不到报错。 #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。 # ret9 = 'title,Tilte,atre,'.split('t') # print(ret9) # ret91 = 'title,Tilte,atre,'.rsplit('t',1) # print(ret91) #format的三种玩法 格式化输出 res='{} {} {}'.format('egon',18,'male') res='{1} {0} {1}'.format('egon',18,'male') res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) #strip name='*barry**' print(name.strip('*')) print(name.lstrip('*')) print(name.rstrip('*')) #replace name='alex say :i have one tesla,my name is alex' print(name.replace('alex','SB',1)) #####is系列 name='taibai123' print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isdigit()) #字符串只由数字组成
format格式化输出
#format的三种玩法,格式化输出 #方法一 s='我叫{},今年{},爱好{},我叫{}'.format('PS',25,'china','PS') print(s) #方法二 s='我叫{0},今年{1},爱好{2},我叫{0}'.format('PS',25,'china') print(s) 方法三 s='我叫{name},今年{age},爱好{hobby},我叫{name}'.format(name='PS',age=25,hobby='china')#注意括号里面可以不用管顺序 print(s)
for 循环
for循环属于有限循环,while循环属于无限循环
s='zndkjdjhfhksl' for i in s: print(i)#s字符串的长度就是该for循环的次数,所以for循环又被称为有限循环
in 的一个用法
s='zndkjd苍井空jhfhksl' if '苍井空'in s: print('您的输入内容有非法字符……')
int的用法
bit_length,是二进制的位数,一般不常用
int转化成布尔值
和数字与字符串之间的转换一样,直接bool()函数进行转换即可。
#具体应用 while ture: pass while 1: pass #首先这两种方法是等价的,但是:
注意此处1的布尔值就是ture,但是这里用1而不是ture,那是因为直接用1能够在计算机运行的时候直接转换成二进制字符,比ture先转换成1然后再转换成二进制效率高,运行速度更快。
其次,虽然非零的数字的布尔值都是ture,但是在写代码的时候这里都是1没有人写2或者其他数字。
字符串与bool值之间的转换
#与数字与字符串之间的转换类似,当字符串为空时bool为False. s='' print(bool(s)) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py False Process finished with exit code 0 #当字符串为非空时,bool值为ture s='中国' print(bool(s)) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py True Process finished with exit code 0 s='' if s:#注意这里就等价与if s=='',这是一种简写 print('您输入为空,请重新输入:') else: pass
字符串的索引和切片
#索引 s='ASDFGGHJKL' s1=s[0] s2=s[-1] print(s1,type(s1))#注意s1依然是一个字符串 print(s2,type(s2))#注意s1依然是一个字符串 #切片,切片遵循的法则是取头不取尾,也就是只能取到开始的字符,但是不能取到结束的字符 s3=s[0:] s4=s[:]#s4和s3等价,都是取完全部的意思 s5=s[0:5:2]#注意最后一个2是步长,也就是说每隔2个取一次 s6=s[4::-1]#从倒数第四个开始,倒着取完所有的字符, s7=s[::-1]#倒着取完所有的字符, print(s3) print(s4) print(s5) print(s6) print(s7) #运行结果 D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/练习.py A <class 'str'> L <class 'str'> ASDFGGHJKL ASDFGGHJKL ADG GFDSA LKJHGGFDSA Process finished with exit code 0
分别用for和while循环打印出一个字符串的所有字母:
s='asdfer' #方法一:for循环 for i in s: print(i) #方法二:while循环 while a<len(s): print(s[a]) a = a + 1
#方法三:
index=0
while 1:
print(s[index])
index=index+1
if index==len(s):break
对输入的字符4+5,5+6等带有加号的字符进行求和,
#法一,利用while循环,自己想到的代码 content=input('请输入内容:').strip() a=content.split('+') print(a,type(a)) sum=0 count=0 while count<len(a): sum=int(a[count])+sum count=count+1 print(sum) #法2,利用for循环,别人想到的代码 content=input('请输入内容:').strip() sum=0 a=content.split('+') for i in a: sum=sum+int(i) print(sum)
统计输入内容中的数字
#自己当时没想出来,这是别人想出来的,惭愧。自己当时没有想到用sidigit这个函数 content=input('请输入内容:') count=0 for i in content: if i.isdigit():#自己当时这里用的是if i==content.isdigit(),所以出现错误 count=count+1 print(count)
一道作业题
在上道题目中进行修改,输入一段字符串,包含数字和字母,连在一起的数字算作一个,然后数出所有数字个数
这道题自己没有做出来,直到老师启发以后才有思路
1 #自己的答案 2 info=input('请输入内容:') 3 count=0 4 for i in info: 5 if i.isalpha(): 6 info=info.replace(i,'*') 7 str1=info.split('*') 8 for j in str1: 9 if j.isdigit(): 10 count=count+1 11 print(count)
这是老师的答案
1 #老师的答案 2 info=input('请输入内容:') 3 for i in info: 4 if i.isalpha(): 5 info=info.replace(i,' ') 6 #print(info) 7 l1=info.split() 8 print(len(l1))