Python学习Day03

1.基本数据类型

  • 整形 int
  • 字符串 str
  • 布尔型 bool
  • 列表 list [12,True,'hello',[1,2,3]] 存储大量数据
  • 元组 tuple (12,True,'hello',[1,2,3])存储大量数据,内容不可变
  • 字典 dict {'name':'bin'} 存储大量关联型的数据,查询速度非常快

2.查看数据类型的源码

以int类型为例:

四个主要函数

以bit_length()函数为例:

i = 4
print(i.bit_length())

输出: 43 输出的是有效的二进制位数

3.字符串的索引与切片

1.按照索引取值

s = '要加油啊asd'
#从左至右有下标,即索引
s2 = s[4]
print(s2,type(s2))

输出结果:s <class 'str'>

对字符串进行索引,切片出来的数据类型都是 字符串类型

然后开始整活:

上面的例子中,我要获取到字符串最后一个字符,数字符串下标?我不,来个花的:

print(s[-1])
print(s[-2])

2.按照切片取值

注:顾头不顾尾

#按切片取值
#顾头不顾尾
s = '要加油啊asd'
s1 = s[0:3]     #从0开始,这个0可以省略
print(s1)       #要加油

s2 = s[4:-1]
print(s2)       #as

#想取出:asd
#s[4:-1],由于这玩意顾头不顾尾,所以只取出:郑佳
# 所以可以给-1+1, 又因为s[4:0]与前面冲突
所以省去后面的下标
s3 = s[4:]     #0省略,不省略出错
print(s3)       #asd

3.切片步长:

#切片步长
#获取:要油a,即从第一个开始,到第4个结束,步长为2
s4 = s[:5:2]    #0省略,5是结束位置,1是步长
print(s4)

4.倒序获取:要加反向步长

#倒序,加上反向步长
s5 = s[-1:3:-1]
print(s5)
s6 = s[-1:-4:-1]
print(s6)

5.全部切片取出和倒序取出:

#全部切片取出:
s7 = s[:]   #头和尾的位置都省略
print(s7)

#全部倒序取出
s8 = s[-1:0:-1]     #dsa啊油加
print(s8)

s9 = s[-1::-1]     #dsa啊油加要
print(s9)

4.字符串的常用操作

0.测定字符串长度

#测定字符串长度

s = 'asdfqwer'
print(len(s))

1.大小写

s = 'JaiBin啊'

#变大写
s1 = s.upper()      #JAIBIN啊
print(s1)

#变小写
s2 = s.lower()      #jiabin啊
print(s2)

应用:不区分大小写的输入

username = input('输入你用户名')
password = input('输入你密码')
code = 'QwEr'
your_code = input('输入验证码,不区分大小写')
if your_code.upper() == code.upper():   #要实现不区分大小写,将两者都转为大写或小写比较即可
    if username == 'bin' and password == '123':
        print('登录成功!')
    else:
        print('用户名或密码错误!')
else:
    print('验证码错误!')

2.startwith() , endwith()

返回值为布尔类型

s = 'zhengjiabin'
print(s.startswith('z'))    #Ture
print(s.startswith('zhengjiabin'))      #Ture

#了解一下
print(s.startswith('j',5,7))    #5到7位置是否由j开始

print(s.endswith('bin'))    #Ture

3.replace()

#replace()

s = 'hhh好厉害,hhh也太强了吧,最气人的是hhh还很帅'
s1 = s.replace('hhh','as')      #默认全部替换
print(s1)       #as好厉害,as也太强了吧,最气人的是as还很帅

s2 = s.replace('hhh','asd',2)
print(s2)       #asd好厉害,asd也太强了吧,最气人的是hhh还很帅
#很尴尬的是,不能直接做到替换1 3 位置的而不替换2位置的

4.strip():去除字符串左右的空格,\t,\n

#strip(): 去除字符串左右的空格: ,tab键:\t, 换行:\n
s = '  \na  s\t\n'
#print(s)
print(s.strip())  #a  s
#了解内容
s2 = 'qwerjiaaabinasdf'
s3 = s2.strip('asfdrewq')
#可以去掉左右两端的所含的这些字母  这些字母的顺序不必与原字符串相同
#但是仍不能去掉中间的
print(s3)       #jiaaabin

5.split()----***肥肠中药

默认按照空格分隔,返回一个列表-----str---->list

#split():默认按照空格分隔,返回一个列表

s = 'as 好 厉害'
s1 = s.split()
print(s1)       #['as', '好', '厉害']

指定分隔符:

#指定分隔符
s2 = 'as:好:厉害'
s3 = s2.split(':')      #使用的分隔符做参数
print(s3)       #['as', '好', '厉害']
#了解内容
s4 = ':aaa:sss:ddd:ff'
s5 = s4.split(':')
print(s5)       #['', 'aaa', 'sss', 'ddd', 'ff']

6.join()----**

#join

s = 'jiabin'
s2 = '+'.join(s)
print(s2)       #j+i+a+b+i+n

s3 = '-'.join(s)
print(s3)       #j-i-a-b-i-n

应用:将列表转换为字符串

前提:列表里的元素必须都是str类型

#可以把列表转换成字符串

l = ['as','真的','好厉害']
s4 = ':'.join(l)
print(s4,type(s4))    #as:真的:好厉害 <class 'str'>
s5 = ''.join(l)
print(s5,type(s5))    #as真的好厉害 <class 'str'>

7.count()

计算字符串中某个字符出现的次数

#count
#计算字符串中某个字符出现的次数
s = 'asdadadsaasdfa'
print(s.count('a'))

8.format:格式化输出

第一种用法:

#format:格式化输出
msg = '我叫{}今年{}性别{}'.format('bin','18','男')
print(msg)      #我叫bin今年18性别男

第二 种用法:常用

#第二种用法

msg = '我叫{0}今年{1}性别{2}我就叫{0}'.format('bin','18','男')
#数字相当于后面元素的索引
print(msg)      #我叫bin今年18性别男我就叫bin

第三种用法:

#第三种用法:

a = 18
msg = '我叫{name}今年{age}性别{sex}'.format(sex='男',age=a,name='bin')
#数字相当于后面元素的索引
print(msg)      #我叫bin今年18性别男

9.is系列

返回值为布尔类型

name = '123bin'

print(name.isalpha())   #字符串是否由字母组成
print(name.isalnum())   #字符串是否由字母或数字组成
print(name.isdecimal())   #字符串是否只由十进制组成

10.in 与 not in

s = '老男孩edu'

print('老' in s)     #True
print('老男' in s)     #True
print('老孩' in s)     #False


print('老孩' not in s)     #True

只能判断相邻字符是否存在字符串中

5.for循环

s = 'asdfqwer'
for i in s:
    print(i)

for else,while else 用法一样