Coy的Python之路--Day2

十年热恋 提交于 2020-02-14 02:41:22

 

 

节内容

  1. 数据类型介绍及格式化输出
  2. str类型
  3. str索引切片及简单操作

 

 

 

一,数据类型介绍及格式化输出                                                                                      

什么是数据类型:

  我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。

1,格式化输出                                                                                       

info = '''
------------ info of %s -----------
Name : Coy Yang
Age : 100
job : Teacher
Hobbie: girl
------------- end -----------------
'''
print(info)

占位符%及双%%

双%%
如果在字符串当中,%当成占位符,没有s或者d只是当做%多少
print('我叫%s,今天%d,学习进度2%%' % ('Coy',25))

字符格式化输出

占位符 

        %s  s = string
        %d  d = digit 整数
        %f  f = float 浮点数,约等于小数

2,较运算符和逻辑运算符优先级                                                          

day1中提到过运算符,今天主要讲逻辑运算符
主要比较运算符和逻辑运算符
and 只要有一个条件为false那么结果就是false
or  只有有一个条件为True那么结果为True
not 是or的取反

(1)前后比较运算符              

优先级

print(1 > 2 and 3 < 4 or 2 > 1 and 4 < 3)
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or
例子:
print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)

(2)前后都是数值               

x or y if x is True,return x
如果x or y,x为true的话,那么结果就是x
0是false,非0都是True,and的结果是or相反,就是说and取y值
print(3 or 4)
print(1 or 4)
print(0 or 1)
print(3 and 5) 

 

二, str类型

什么是字符串
在Python中,加了引号的字符都被认为是字符串!
1,引号的使用
单引号和双引号,什么时候该用单引号什么时候该用双引号,三引号
 
s1 = 'yangchen'
s2 = "yangchen"
msg = "My name is Coy, I'm 25 years old!"
print(msg)

三引号一般都是在长字符串时候引用

msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)

2,字符串+*

(1)+

s1 = 'coy'
s2 = 'ssss'
print(s1+s2)

(2)*

s1='coy'
print(s1*8)

三,str索引切片及简单操作

1,字符串索引切片

通过索引切出来的是新字符串,新的内存地址,在取的时候要多取一个,因为顾头不顾尾

 
s = 'coysaihanhan'
s1 = s[0]
print(s1)
#获取字符串索引为0的
 
s = 'coysaihanhan'
s2 = s[2]
print(s2)
#获取字符串索引为2的
 
s = 'coysaihanhan'
s3 = s[-1]
print(s3)
#从后往前,取倒数第一个
 
s = 'coysaihanhan'
s4 = s[-2]
print(s4)
#从后往前,取倒数第二个
 
s = 'coysaihanhan'
s5 = s[0:3]
print(s5)
#从索引为0的开始取到索引为2的,因为顾头不顾尾
 
s = 'coysaihanhan'
s5 = s[0:4]
print(s5)
#从索引为0的开始取到索引为3的,因为顾头不顾尾
 
s = 'coysaihanhan'
s5 = s[:4]
print(s5)
#从索引为0的开始取到索引为3的,因为顾头不顾尾,:前不加默认是最前
 
s = 'coysaihanhan'
s5 = s[4:9]#aihan
print(s5)
#从索引为4的开始去到索引为8的,因为顾头不顾尾
 
s = 'coysaihanhan'
s5 = s[:]
print(s5)
#从头到尾
 
#可以加步长
#隔一个取一个,默认1是挨着,2是隔一个取一个
  s = 'coysaihanhan'
  s5 = s[:5:2]
  print(s5)#cya

#反向步长
#倒着取必须加反向步长
s = 'coysaihanhan'
s5 = s[-1:-5:-1]
print(s5)#nahn

  

总结:s[起始索引:结束索引+1:步长]  

2,str操作

(1)capitalize

首字母大写其余字母小写

a = 'coyyangCHENhanhan'
s1 = a.capitalize()
print(s1) 

 print结果为:

Coyyangchenhanhan

(2)swapcase

大小写翻转

a = 'coyyangCHENhanhan'
s2 = a.swapcase()
print(s2)  

print结果为:

COYYANGchenHANHAN

(3)title

非字母元素隔开的每个单词首字母大写

a = 'coy yang*chen2hanhan'
s3=a.title()
print(s3)  

print结果:

Coy Yang*Chen2Hanhan

(4)center

总长度30并且让字符串居中

a = 'coyyangchenhanhan'
s4=a.center(30)
print(s4)

print结果为:

可以通过源代码来查看一些参数

查看源代码后发现有默认参数,证明可以添加一个参数,这里默认是None

a = 'coyyangchenhanhan'
s4=a.center(30,'*')
print(s4)

 print结果:

(5)upper和lower

upper全大写,验证码时候用

a = 'coyyangchenhanhan'
s5=a.upper()
print(s5)

print结果:

COYYANGCHENHANHAN

什么时候用,怎么用
例如,我们经常输入用户名密码和验证码,就是说无论用户输入是大写还是小写,都转换成大写,这样减少匹配次数,提高匹配率
code = 'AwEqe'
username = input('请输入用户名')
you_code = input('请输入验证码')
if username == 'coy' and you_code.upper() == code.upper():
    print('验证成功')

lower全小写

a = 'COYYANGCHENHANHAN'
s5=a.lower()
print(s5)

coyyangchenhanhan

(6)startswith和endswith

startswith
判断以什么什么开头,返回真假
 
a = 'coyyangchenhanhan'
s6 = a.startswith('c')
print(s6)

print结果:

不能过于局限,不只是可以匹配个体,也可以匹配整体
 
a = 'coyyangchenhanhan'
s6 = a.startswith('coy')
print(s6)

print结果

  

来看源码,有两个默认参数,默认都是None

设置字符串的起始位置和结束位置

str = "this is string example....wow!!!"
print (str.startswith( 'this' ))
print (str.startswith( 'string', 8 ))
print (str.startswith( 'this', 2, 4 )) 

print结果:

endswith

以什么什么为结尾

a = 'coyyangchenhanhan'
s6 = a.endswith('n')
print(s6)

print结果

str = "this is string example....wow!!!"

suffix = "wow!!!"
print(str.endswith(suffix))
print(str.endswith(suffix, 20))

suffix = "is"
print(str.endswith(suffix, 2, 4))
print(str.endswith(suffix, 2, 6))  

print结果:

(7)strip

默认去掉字符串前后的空格,换行符,制表符配合input
lstrip默认去除左面的
rstrip默认去除右面的
a = '      coyyangchenhanhan\t'
s7 = a.strip()
print(s7)  

print结果:

coyyangchenhanhan

例子:

username = input('请输入用户名').strip()
password = input('请输入密码')
if username == 'coy' and password == '123':
    print('登录成功')

去除元素可以定义
从前往后,从后往前,一次去除
ss = 'coyyangchenhanhan'
ss1 = ss.strip('cn')
print(ss1)

(8)replace

替换

首先看源代码

s = 'coy wgrwa coy'
s8 = s.replace('coy','han',1)
print(s8)  

print结果:

han wgrwa coy  

(9)split

分割,str -------> list
默认以空格分割
s = 'coy yangchen hanhan'
l = s.split()
print(l)  

print结果:

['coy', 'yangchen', 'hanhan']  

也可以定义任何元素分割

s = 'coy,yangchen,hanhan'
l1 = s.split(',')
print(l1)

print结果:

['coy', 'yangchen', 'hanhan']

如果要是分割开头的c呢
分割第一个元素就是空格
s = 'coyyangchenhanhan'
l2 = s.split('c')
print(l2)  

print结果:

['', 'oyyang', 'henhanhan']  

也可以按照次数分割

s = 'coyyangchenhanhan'
l3 = s.split('h')
print(l3)  

print结果:

['coyyangc', 'en', 'an', 'an']

按照次数分割后

s = 'coyyangchenhanhan'
l3 = s.split('h',2)
print(l3)   

print结果:

['coyyangc', 'en', 'anhan']

(10)join  list-------->str

列表转换成str
 
s = ['coy','yangchen','hanhan']
s10 = ''.join(s)
print(s10)

print结果:

coyyangchenhanhan

也可以用空格来连接

s = ['coy','yangchen','hanhan']
s10 = ' '.join(s)
print(s10)  

print结果:

coy yangchen hanhan

但是必须列表里必须是字符串否则报错

(11)find,index

通过元素找索引

s = 'coyyangchenhanhan'
s11 = s.find('c')
s12 = s.find('coy')
print(s11)
print(s12)
s13 = s.find('c',1)
print(s13)

print结果:

index

s = 'coyyangchenhanhan'
s11 = s.index('c')
s12 = s.index('coy')
print(s11)
print(s12)
s13 = s.index('c',1)
print(s13)

区别在于,find没找到就-1 ,index没找到就报错

(12)len

len 测量个数

s = 'coyyangchenhanhan'
print(len(s))

print结果:

17

(13)count

元素出现的个数

s = 'coyyangchenhanhan'
print(s.count('h'))  

print结果:

17

(14)format

格式化三种用法

第一种
s = "我叫{},今年{},爱好{}"
s12 = s.format('coy','25','hanhan')
print(s12)

第二种
s = "我叫{0},今年{1},爱好{2},我依然叫{0}"
s13 = s.format('coy','25','hanhan')
print(s13)

第三种
s = "我叫{name},今年{age},爱好{hobby}"
s14 = s.format(age=25,hobby='hanhan',name='coy')
print(s14)

(15)is系列

name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
所有转换格式
str ---> int 字符串全部由数字组成 int('123')
int ---> str str(1)
 
 
int ---> bool 0---> False 非0 ---> True bool(1)
# print(bool(100))
# print(bool(-1))
# print(bool(0))
 
bool --> int True 1 False 0
print(int(True))
print(int(False))
 
str ---> bool 非空 True 空字符串 False
print(bool(''))
print(bool('fdsaf'))
bool ---> str
# print(str(True),type(str(True)))
 
str ---> list split
list --> str join

  

  

  

  

  

  

  

  

  

  

  

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!