python03
1.String字符串
1.1 字符串的格式化
s1='hello'
s2="hello"#单双引号相同
1.2 document 文档 (表示说明文档,放在开头)
三引号, 三引号包含多行字符串常量
所有行合并在一起
并在每行末尾增加一个换行符
print(__doc__)输出上面三引号里面的内容,三引号里面的内容必须放在开头
1.3 统计字符串的长度
s2='python'
l=len(s2)
print(l)
==============
s2[1]='i'
print(s2)#结果出错,字符串里的元素不能别修改,
若想改变只能再定义一个变量去接受新
的字符串
=====================
print('i am "tom"')单双引号交替使用
1.4 字符串是否相等
s1='i love python'
s2=s1
s1='nonono'
print(s2)
print(s1==s2)#True
print(s1 is s2)#True
s3=s1[:]
print(s3) #nonono
print(s1==s3)#True
print(s1 is s3)#True
1.5 字符串连接
s1='py'
s2='thon'
=======================
s3=s1+s2
print(s1+s2) # python
=============================
s4=s1*5
print(s4) #pypypypypy
=============================
s5=s2+'!!'
print(s5)#thon!! s2发生了变化,字符串里的元素不能别修改,
若想改变只能再定义一个变量去接受新
的字符串
print(s2)# thon
1.6 字符串格式输出
u_name='python'
u_age=20
=======================================
print('i am%s,and i am%d years old'%(u_name,u_age))
#i ampython,and i am20 years old
=============================================
print('i am%8s,and i am%d years old'%(u_name,u_age))
#i am python,and i am20 years old 左补空格凑齐8位
===================================================
print('i am%-8s,and i am%d years old'%(u_name,u_age))
#i ampython ,and i am20 years old 右补空格凑齐8位
2.切片
切片的格式 (起始位置:终止位置:切的方向,正反)(不包含终止位置的内容)
顺序切片
s='i love python'
print(s[2:6]) #love i为0,空格为1,l为2
print(s[11:]) #on 不写表示切到最后
print(s[-1:]) #倒着数 n为-1 o为-2 还是正着切
print(s[-6,-2]) # pyth 不包括-2
print(s1[:])#表示从最左端切到最右端 i love python
跳跃切片
s1='abcdefghi'
print(s1[::3]) #adg
for i in range(1,100,2):# 求1到100内偶数 和上面原理一样都是跳着输出
pass
反向切
s2='abcdefghi'
print(s2[-3:2:-1]) #gfed -1表示反向
print(s2[::-1])#字符串反转
print(s2[3:7:-1])#切不到
测试
s2='abcdefghi'
print(s2[0:1]) #.第一个
print(s2[-1:])#最后一个
print(s2[4:5])#中间任何一个
print(s2[:]) #所有
print(s2[::2])#偶数个
print(s2[1::2])#奇数个
demo 文章的显示…
if len(content)>10:
con=content[0:17]+'...'
else:
con=content #简写con=content if len(content)<=10 else content[0:17]+'...'
print(con)
3.字符编码
encode()将字符串编码转为字节码
decode()将字节码转为字符串编码
s='你好 python'
byte_s=s.encode('utf-8')#将字符串编码转为字节码
print(byte_s)
utf_s=byte_s.decode('utf-8')#将字节码转为字符串编码
print(utf_s)
===========================================
#将utf-8编码的字符串转化为GBK编码的字符串
s='你好 python'
byte_gbk_s=s.encode('GBK')
print(byte_gbk_s)
gbk_s=byte_gbk_s.decode('GBK')
print(gbk_s)
4.內建函数
count()测定字符串中的字母或单词出现几次
s1='hello world hello world'
==========================================
c1=s1.count('hello') #测定hello出现几次
==========================================
ss1=''
for i in s1 :
if ss1.count(i)==0:
ss1=ss1+i
print(ss1) # helo wrd将s1中元素不重复的存到ss1中
===========================================
max=0
ch=''
for i in s1:
m=s1.count(i)
if max<m:
ch=i
max=m
print(ch,max) #输出s1中出现最多的字母和次数
===============================================
s1='hello world hello world'
print(s1.count('hello',2)) #1 从第二个元开始寻找hello出现的次数
========================================
f='hello' in s1
print(f)#True # 查看s1中是否有hello
find() 寻找字符串中元素的位置
s1='hello world hello world'
====================
i=s1.find('hello')
print(i) #0 所在位置
=======================
i=s1.find('hella')
print(i)#-1表示没有
replace() 替换 可以为单个字母或单词
s1='hello world hello world'
===================================
s2=s1.replace('hello','hi',1)
print(s2) #hi world hello world 1为替换次数
===================================
s2=s1.replace('hello','hi',2)
print(s2) #hi world hi world
=================================
s2=s1.replace('hello','hi',3)
print(s2) #hi world hi world 3和2效果一样
split()截断
date='2018-3-1'
times=date.split('-')
print(times) # ['2018', '3', '1'] 结果放在一个数组里面
print(times[0]) #2018
print(times[1]) #3
join() 连接 串起来
# s2='python' #['2018','3','1']
# s3='-'
# s4=s3.join(s2)
# print(s4)#p-y-t-h-o-n # 2018-3-1
isdigit() 判断是否为纯数字
isalpha() 判断是否为字母
isalnum() 判断是否为字母或数字
if len(pwd)>=6 and pwd.isdigit():
pass
=====================================
print(pwd.isalpha())#判断是否为字母
print(pwd.isalnum())#判断是否为字母或数字
strip()去掉左右空格
lstrip()去掉左空格
rstrip()去掉右空格
user_id=' admin '
print(len(user_id)) # 9
user_id=user_id.strip()#去掉左右空格
user_id=user_id.lstrip()#去掉左空格
user_id=user_id.rstrip()#去掉右空格
print(len(user_id)) # 5
5
s='abc'
#print(dir(s))#查看s可执行的函数
help(s.split)#查看函数用法
6.list列表(数组)
6.1数组初始化
arr=[]
arr2=[1,2,3]
arr3=[1,12.5,'python'] # 数组内可为不同的元素
print(len(arr3))#len公共方法不属于数组
===========================================
arr3[2]='JAVA'
print(arr3) #[1, 12.5, 'JAVA']
列表可变:指的是空间里的内容可变,指向 字符串不可变
arr2 = [1, 2, 3]
for i in range(len(arr2)): #range用于改变数组元素的值 长度为4-> 0,1,2,3
arr2[i]*=2
print(arr2)
6.2 遍历数组
arr3=[1,12.5,'python']
for i in arr3:
print(i)
找数组里的元素 切片
books=['aaa','bbb','ccc','ddd','eee']
books[0]
print(books[-1])#最后一个元素,等价于print(books[4])
books01=books[0:2]
book02=books[::-1]#反转
print(books01)
demo 分页流程
#每一页显示几本书,
page_count=2
page_index=1
m=len(books)/page_count
n=len(books)//page_count
page=n if m==n else n+1
#第一页显示的内容
books_index=books[(page_index-1)*page_count:page_index*page_count]
print(books_index)
6,3 list的操作
count统计数组中字符串出现的个数
fruits=['a','b','c']
print(fruits.count(a))
index统计数组中字符串出现的位置
reverse()反转
fruits.reverse()#可以自己反
print(fruits)
a=fruits[::-1]#只能反 给别人
print(a)
sort()排序
fruits.sort()#按字母顺序排序
print(fruits)
fruits=['a','b','c']
fruits.sort()
f=fruits
f=fruits[:]
f[0]='w'
print(f)
print(fruits)
demo
1.找出数组中元素最大和最小数并输出位置
arr=[2,1,4,5,3,6,9]
max=arr[0]#定义最大的值为数组的第一个元素 不能定义为0 因为有负数的可能
min=arr[0]#定义最小的值为数组的第一个元素 不能定义为0 因为数组里的值可能都比0大
max_index=0#定义最大值的下标为第一个
min_index=0#定义最小值的下标为第一个
a=0 #用来表示下标
b=0 #用来表示下标
for i in arr:
if i>max:
max=i
max_index=a#把此时最大值的下标给max_index
a=a+1
for m in arr:
if m <min:
min = m
min_index = b#把此时最小值的下标给min_index
b=b+1
print(max,max_index)
print(min,min_index)
注意
改变数组里元素的值
arr=[6,9,1,7,3]
for i in range(len(arr)): #此时i为下标 #不能这样写 for i in arr :#i为数组里每个元素的值
arr[i]*=2 arr[i]*=2
print(arr)#结果为12,18,2,14,6 print(arr)
2.判断密码是不是6位的全数字
pwd = input('请输入密码')
flag=True
for i in pwd:
if not ('0'<=i<='9'and len(pwd)==6):
flag=False
break
if flag:
print(True)
else:
print(False)
简写如下:
a=input('请输入密码')
if a.isdigit() and len(a)==6:
print('yes')
else:
print('no')
3.判断用户名是否全是小写字母
user_id=input('')
flag=True
for i in user_id:
if not ('a'<=i<='z'):
flag=False
break
if flag:
print('yes')
else:
print('no')