一,fo循环基本介绍
1.1什么是for循环
循环就是重复做某事,for循环是python的第二种循环机制
1.2为什么要有for循环
理论上for循环能做的事情,while循环都可以做
之所以有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁
1.3如何用for循环
基本语法:
for 变量名 in 可迭代对象:#可迭代对象可以是:列表,字典,字符串,元组,集合
代码1
代码2
。。。。
二,for循环----基本使用之循环取值
案例1:(列表取值)
for循环取值#############for循环能取多少值在于后面有多少个值
for x in ['mary','is','eighteen']:
print(x)#输出 mary is eigtheen
while循环取值########while能取多少值取决与条件
L= ['mary','is','eighteen']
i=0
while i<3:
print(i)----------print(L[i])#######输出mary is eigtheen
i+=1########输出0 1 2得到while循环的索引
案例2:(字典循环取值)
for 循环取值
dic={'k1':111,'k2':222,'k3':333}
for x in dic:#取出来的是key
print(x,dic[x])######输出k1 111 k2 222 k3 333
while循环(也可以遍历字典)
案例3:(字符串循环取值)
for循环取值
mag='you can you up ,no can no bb'
for x in mag:
print(x)######输出you can you up ,no can no bb
三,总结for循环与while循环
1,相同之处:都是循环 for循环可以干的事 while循环也可以
2,不同之处:
while称为条件循环,循环次数取决于条件何时为假
for称为取值循环,循环次数取决于in后包含值的个数
##for循环的另外用法,不一定用于取值,而用于循环次数
for x in [1,2,3]:#有三位数,可用于代表循环3次
print(》》》)#####输出》》》 》》》 》》》(本竖着3个,方便书写写在一排)
四,for+range
for控制循环次数的局限性:for循环可以代表循环次数,但要循环100次呢?后面需要跟100个值。不方便。
python2中:
range (10)
####输出0,1,2,3,4,5,6,7,8,9 range顾头不顾尾
range(1,9,1)####第一位代表从1开始,第二位代表9前一位数结束,第三位数代表间隔为1
#####输出1,2,3,4,5,6,7,8
range(1,9,2)
######输出1,3,5,7
for x in range(30):
print(》》》》)#####输出》》》》*30(方便书写)
4.1,range的补充
4.1.1for+range+len
借助len搭配range,for可以取到索引值但是麻烦
L= ['mary','is','eighteen']#用len得到列表里值的个数
for x in range(len(L)):####等同于range(3)
print(x)#得到0 1 2 索引print(x,L[x])取到列表里的值
4.1.2range在python3中
range(10)####在python3中得到range(0,10)等同于能下1-9的老母鸡,需要1-9中的数值时,老母鸡临时下蛋,用法和python2中的一样
for x in range(10)
print(x)###输出0 1 2 3 4 5 6 7 8 9
五,for+break+else
for+break同while一样
for+else同while一样
day07 输入密码改写:要求输错循环3次
name='mary'
password='123'
for x in range(3):
inp_name=input('请输入用户名')
inp_pwd=input('请输入用户密码')
if inp_name==name and inp_pwd==password :
print('登入成功')
break
else:
print('输入账号密码次数过多')
六,for+continue
需要:取0-10,跳过4
for x in range(11):
if x ==4:
continue
print(x)######输出0 1 2 3 5 6 7 8 9 10
七,print的补充
print('hello')##输出hello'
print('word')##输出word'####是两行的
print('hello\n')###\n代表换行
print('word')####输出hello 与word之间是空两行的,print自己本身就会带一个换行,\n又换了一行,所以空两行
print('hello'。end=' ')#代表print后不要接换行了
print('word')#####输出helloword连在一起
print('hello',end='&')
print('word',end='&')###用&号代替空行链接hello&word&
八,for循环嵌套
外层循环一次,内层循环需要完整的循环完毕
for i in rang(3):
print('》》》》》外层循环',i)
for x in range(3):
print('》》》》》内层',x)
补充:终止for循环只有break一种方案
结果如下:
》》》》》外层循环 0
》》》》》内层 0
》》》》》内层 1
》》》》》内层 2
》》》》》外层循环 1
》》》》》内层 0
》》》》》内层 1
》》》》》内层 2
》》》》》外层循环 2
》》》》》内层 0
》》》》》内层 1
》》》》》内层 2
九,数字类型
9.1类型转换
int('1001')#纯数字字符转换为int
9.1.1进制转换
01二进制只用01表示
0-7八进制用0-7表示
0-9十进制用0-9表示
0-9 a b c d e f十六进制
10进制>>>>2进制11>>>>1011
2进制>>>>>10进制(后面有几位就*2的几次方)1011>>>>8+0+2+1
python中的十进制转化
十进制>>>>>(ob)二进制bin print(bin(11))###输出ob1011
十进制>>>>>(0o)八进制oct print(oct(11))###输出0o13
十进制>>>>>(0x)十六进制hex print(hex(11))###输出0xb
print(hex(123))###输出0x7b
其他进制转十进制
int('ob1011',2)#2代表二进制 11
int('0o13',8)#8代表八进制 11
int('0xb',16)#16代表十六进制 11
9.1.2 float类型转换
res=float('3.1')将字符串3.1转为浮点型赋值给res。转为浮点型后就可以与整型做数学运算与比较运算
十,字符串类型
10.1作用
记录描述性状态
10.2类型转换
str可以把任意其他类型转为字符串
res=str({'k1':111})##输出{'k1':111}看起来是字典其实是字符串
10.3使用
10.3.1按索引取值
(正向取+反向取):只能取
mag='hello word'
正向取
print(mag[0])#取出h
print(mag[4])#取出o
反向取
print(mag[-1])#取出d
10.3.2 切片:
索引的扩展应用,从一个大的字符串拷贝出一个子字符串(顾头不顾尾,步长)
mag='hello word'
#顾头不顾尾,要取到从0开始的第四位输入5,
mag[0:5]####取到hello
#步长
res=mag[0:5:2]###取到0 2 4位,步长为2-------h l o
#反向步长
res=mag[5:0:-1]
print(res)###输出olle
#补充
mag[:]####不写开始与结尾,默认从头到尾都取
mag[::-1]#####把整个字符串倒着取出来
10.3.3移除字符串左右两侧的符号strip
mag=' egon '#需要移除字符串两侧的空格
res=mag.strip()#什么都不填默认移除空格
print(mag)#不会改变原值
print(res)#是产生了新值
mag='*******egon*****'
mag.strip(*)#去掉左右两侧*号
#strip只去两边不去中间
先从左侧开始访问,访问到符号外的字符串停止,然后从右侧访问,访问到符号外的字符串停止,所以只能去掉两侧的符号,不能去掉中间的符号
应用:
name='egon'
password='123'
inp_name=input('请输入账号名').strip()#防止用户手抖输入空格符而导致输入错误
inp_pwd=input('请输入账号密码').strip()
if inp_name==name and inp_pwd==password:
print('登入成功')
else:
print('账号密码错误')
10.3.4 切分split:
把一个字符串按照某种分隔符进行切分,得到一个列表
#默认空格分隔
info='mary is eighteen'
res=info.split()
print(res)------输出['mary','is','eighteen']
#指定分隔符
info='mary: is :eighteen'
res=info.split(':')
print(res)------输出['mary','is','eighteen']
#指定分隔次数
info='mary: is :eighteen'
res=info.split(':',1)#分割一次,is:eighteen为一个整体
print(res)------输出['mary','is :eighteen']
10.4需要掌握
10.4.1strip lstrip rstrip
mag='******egon****'
print(mag.strip('*'))#去两边的*
print(mag.lstrip('*'))#去左边的*
print(mag.rstrip('*'))#去右边的*
10.4.2 lower upper
mag='AAAaaBBBbb'
print(mag.lower())###输出aaaaabbbbb全为小写
print(mag.upper())###s输出AAAAABBBBB全为大写
10.4.3 startwith endwith
print('mary is eighteen'.startwith('mary'))#判断mary is eighteen字符串是否以mary开头
print('mary is eighteen'.endwith('eighteen'))#判断mary is eighteen字符串是否以eighteen结尾
10.4.4 split resplit
info='mary: is :eighteen'
print(info.split(':',1))#['mary','is :eighteen']从左分割一位
print(info.resplit(':',1))#['mary:is',eighteen']从右分割一位
10.4.5 join
把列表拼接成字符串
l=['mary','is','eighteen']
#res=l[0]+':'+l[1]+':'+l[2]+':'#mary: is :eighteen
":".join(l)###mary: is :eighteen
#join按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串,如果列表里有除开字符的其他类型
则无法拼接起来
10.4.6 replace
mag='you can you up no can no bb'
mag.replace('you','YOU',1)#第一位参数填替换的替换对象,第二位参数填替换后的对象,第三位参数
替换第几个,不填默认替换全部
10.4.7 isdigit
判断字符串是否由纯字符串组成
print('123'.isdigit())#输出true
10.4.8应用
age=input('请输入你的年龄').strip()
if age.isdigit():
age=int(age)
if age>18:
print('猜大了')
elif age<18:
print('猜小了')
else:
print('猜对了')
else:
print('必须输入数字')
十一,字符串的所需了解
11.1 find rfind index rindex count
find index
info='mary is eighteen'
#找得到索引
print(info.find('a'))#输出1,返回要查找的字符串在大字符串中的起始索引
print(info.find('is'))#输出5
print(info.index('a'))#输出1
#找不到索引
print(info.find('xxx'))#找不到输出-1
print(info.index('xxx'))#找不到直接程序报错
count
info='mary is eighteen'
print(info。count('e'))#输出3,字符串中e有三个
11.2 center ljust rjust zfill
print('mary'.center(50,'*'))#第一个参数总共的字符串要占领的宽度,第二参数填补的符号
#mary在中间显示,不够50的用*号填满
***************mary*********
print('mary'.ljust(50,'*'))
mary************************
print('mary'.rjust(50,'*'))
************************mary
print('mary'.zfill(10))#zfill规定用0填充,默认右对齐
000000mary
11.3 expandtabs
\n代表换行
\t代表制表符(空格)
mag='hello\tword'#hello word
print(mag.expandtabs(2))#设置制表符的空格为2
11.4captalize,swapcase,title
print('hello word mary'.capitalize())#Hello word mary首字母大写
print('Hello Word Mary'.swapcase())#hELLO wORD mARY大小写反转
print('hello word mary'.title())#Hello Word Mary每个单词的首字母大写
11.5 is系列
islower判断是否全为小写
isupper 判断是否全为大写
istitle判断每个单词首字母是否为大写
isalnum判断是否由数字或字母组成
isalpha判断是否由字母组成
isspace判断是否全由空格组成
isidentifier判断是否标识符是否合法
十二,数字类型
num1=b'4'.isdigit()#true
num2=u'4'.isdigit()#true u'4'.isnumeric()#true u'4'.isdecimal()#true
num3='四'.isdigit()#false '四'.isnumeric()#true '四'.isdecimal()#false
num4='IV'.isdigit()#false 'IV'.isnumeric()#true 'IV'.isdecimal()#false