python day08

一,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

 

 

 

 

 

 

 

 

 

 

  

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值