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))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-12-27 22:12  舒畅123  阅读(161)  评论(0)    收藏  举报