day06.2020-12-22

上节课复习:

       while 条件:

              代码1

              代码2

              代码3

       else:

              代码1

              代码2

              代码3

       结束while循环的两种方式:

             1、条件改为false

             2、break

       while+continue:

             1、continue同级别之后不要写代码

             2、不要把continue放在最后一步

       while+else

        2、for循环

             1、for 变量名 in 值:

                        代码1

                        代码2 

                        代码3

                   else:

                        代码1

                        代码2

                        代码3

               for + break

 

今日内容:

       基本数据类型常用操作及内置方法

       for循环补充:

            for+range

            for+enumerate

       可变类型与不可变类型

 

 

       int 

       float

       str

       list

 

for + range

在python2中

range(2)=======》》》》【0,1,2】

range(3,10)======》》》》【3,4,5,6,7,8,9】

range(3,10,2)=======》》》》【3,5,7,9】

range(10,3,-1)======》》》》【10,9,8,7,6,5,4】

for + enumerate

for item in enumerate(【‘egon’,‘tom’,‘jack’】):

      print(item)

 

#1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典

#2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间) 

                         x = 10 

                         print(id(x))

                         x = 11

                         print(id(x))

================================int基本使用======================================

1、用途:记录年龄、个数、号码等整数相关的

2、定义方式:

age = 18 # age = int(18)

#int数据类型转换:可以把纯数字组成的字符串转成整形

res=int(‘18’)

3、常用操作+内置的方法

数字运算+比较运算

存一个值,不可变

===============================float类型====================================

1、用途:记录薪资、身高、体重

2、定义方式

salary = 3.1 #salary = float(3.1)

#float数据类型转换:可以把小数组成的字符串转成整形

res = float(111)

res = float(‘1.1’)

存一个值,不可变

#补充了解:

Long类型:python2中的长整形

print(bin(11)) 二进制转换

print(oct(11))8进制转换

print(hex(11))16进制转换

=================================字符串类型=====================================

1、用途:记录描述性质的状态

2、定义方式:在“”,“”“”“”,‘’‘’‘’内包含一串字符

msg = "asd" # msg = str('' abc'')

#上述引号定义出来的都是str类型,没有区别

#引号的嵌套:外层双引号,内层只能用单引号

#三引号可以存放多行字符串

 

#数据类型转换:str可以把任意类型都转成字符串类型

#补充 \n  换行   

print("abc\nddd")

print(r"abc\nddd")

print("abc\\nddd")

举例:

file_path = 'D:\new\a.py''

print(file_path)=======>>>>>>>>>>>乱码

修正:file_path =r 'D:\new\a.py''

或者file_path = 'D:\\new\\a.py''

字符串类型:只能取不能改

#切片(骨头不顾尾,步长)

msg = "hello world"

res=msg[1:7:2]

print(res)

#长度len

#成员运算in和not in

msg = “hello world”

print(“he” not in msg)

#移除空白strip

msg = "       hello                "

res=msg.strip()

print(res)

print(msg)

 

msg = "********hello*******************"

res=msg.strip("*")

print(res)

print(msg)

 

 

msg = "*****+%***hello*******************"

res=msg.strip("*+%")

print(res)

print(msg)

#切分split

msg="egon:123:3000"

res=msg.split(":")

print(res)

#循环

================================

需要掌握的操作

1、优先掌握的操作*****:

复制代码

1、按索引取值(正向取+反向取) :只能取
msg = 'hello world'
print(msg[0],type(msg[0]))  # 正向取
>>>:
h <class 'str'>
print(msg[-1])  # 反向取
msg[0] = 'H'  # 只能取不能改

2、切片(顾头不顾尾,步长)
字符串切片:从字符串中取出相应的元素,重新组成一个新的字符串
语法: 字符串[ 开始元素下标  :  结束元素下标  :  步长  ]   # 字符串的每个元素都有正负两种下标
步长:切片间隔以及切片方向,默认值是1;实际意义为从开始取一个数据,跳过步长的长度,再取一个数据,一直到结束索引
步长为正值:开始索引默认为0, 结束索引默认为最后是len()+1,从开始索引从左往右走;
步长为负值:开始索引默认为-1, 结束索引默认为开始,不能认为是0,也不能认为是-1,从开始索引从右往左走;
msg = 'hello world'
res1 = msg[1:7]
res2 = msg[1:7:2]
print(res1)
print(res2)
print(msg)
>>>:
ello w
el
hello world
复制:
res = msg[:]
print(res)
>>>:
hello world
将字符串倒着写出来
res = msg[::-1]
print(res)

3、长度len
msg = 'hello world'
print(len(msg))
>>>:
11

4、成员运算in和not in
msg = 'hello world'
print('he' in msg)
print('he' not in msg) # 推荐
print(not 'he' in msg)
>>>:
True
False
False

5、移除空白strip
msg = '   hello    '
print(msg.strip())
>>>:
msg = 'hello world'
msg = '*******hello*******'
print(msg.strip('*'))
>>>:
hello
msg = '+*-hello***%/*'
print(msg.strip('+*-/%'))
>>>:
hello

6、切分split
msg = 'egon:123:3000'
res = msg.split(':')
print(res[0])
>>>:
egon
res = msg.split(':',1)
print(res)
>>>:
['egon', '123:3000']

7、循环
msg = 'hello word'
for x in msg:
    print(x)

复制代码

 

2、需要掌握的操作****:

复制代码

1、strip,lstrip,rstrip
msg = '*****hello*****'
print(msg.strip('*'))
print(msg.lstrip('*')) #去除左边指定字符
print(msg.rstrip('*')) #去除右边指定字符
>>>:
hello
hello*****
*****hello

2、lower,upper
msg = 'hello word'
print(msg.lower())
print(msg.upper())
>>>:
hello word
HELLO WORD

3、startswith,endswith
msg = 'egon is ok'
print(msg.startswith('egon'))
print(msg.startswith('eg'))
print(msg.endswith('ok'))
>>>:
True
True
True

4、format的三种玩法
msg = 'my name is %s ,my age is %s' %('egon',18)
msg = 'my name is {name} ,my age is {age}'.format(age = 18,name = 'egon')
msg = 'my name is {1} ,my age is {0}{0}'.format(18,'egon')
print(msg)
print(msg)
print(msg)
>>>:
my name is egon ,my age is 18
my name is egon ,my age is 18
my name is egon ,my age is 1818

补充:
msg = 'my name is {name} ,my age is {age}'.format(**{'age':18,'name':'egon'})
msg = 'my name is %(name)s ,my age is %(age)s' %{'age':18,'name':'egon'}
print(msg)
print(msg)
>>>:
my name is egon ,my age is 18
my name is egon ,my age is 18

name = 'egon'
age = 18
res = f'my name is {name} my age is {age}'
print(res)
>>>:
my name is egon my age is 18

5、split,rsplit
msg = 'egon:18:3000'
print(msg.split(":",1))
print(msg.rsplit(":",1))
>>>:
['egon', '18:3000']
['egon:18', '3000']

6、join
msg = 'egon:18:3000'
l = msg.split(":")
print(l)
res = ":".join(l)
print(res)
>>>:
['egon', '18', '3000']
egon:18:3000

7、replace
msg = 'egon xxx egon yyy egon'
res = msg.replace('egon','Egon',1)
res = msg.replace('egon','Egon',-1)
res = msg.replace('egon','Egon')
print(res)
>>>:
Egon xxx egon yyy egon
Egon xxx Egon yyy Egon
Egon xxx Egon yyy Egon

小案例:
msg = '**_+_***he llo***+_**'
res = msg.strip('*_+-').replace(" ",'')
print(res)

8、isdigit
num = input('>>>:')
if num.isdigit():
    num = int(num)
    print(num > 10)
else:
    print('必须输入数字,小垃圾')

复制代码

3、其他操作(了解即可)

复制代码

 其他操作(了解即可)***
1、find,rfind,index,rindex,count
msg = 'hello xxelx yyely abc'
res =msg.find('el')
res =msg.rfind('el')
print(res)
res1 = msg.index('el')
res2 = msg.find('nnn')    # 找不到返回-1
res2 = msg.index('nnn')   # 找不到则报错
print(res1)
print(res2)

2、center,ljust,rjust,zfill
print('hello'.center(20,'*'))  # *******hello********
print('hello'.ljust(20,'*'))   # hello***************
print('hello'.rjust(20,'*'))   # ***************hello
print('hello'.zfill(20))       # 000000000000000hello

3、captalize,swapcase,title
print('hello'.capitalize())    # Hello
print('aAbB'.swapcase())       # AaBb
print('hello word'.title())    # Hello Word

4、is数字系列
在python3中
num1=b'4'   #bytes
num2=u'4'   #unicode,python中无需加u就是unicode
num3='四'  # 中文数字
num4='Ⅳ'    #罗马数字
bytes、unicode
print(num1.isdigit())   # True
print(num2.isdigit())   # True
print(num3.isdigit())   # False
print(num4.isdigit())   # False
unicode
print(num2.isdecimal())   # True
print(num3.isdecimal())   # False
print(num4.isdecimal())   # False
unicode、中文数字、罗马数字
print(num2.isnumeric())     # True
print(num3.isnumeric())     # True
print(num4.isnumeric())     # True

5、is其他
name = 'egon123'
print(name.isalpha())     # False  只能由字母组成
print(name.isalnum())    # True  由字母或数字组成

print(name.islower())    # 是否全是小写
print(name.isupper())   # 是否全是大写

name = '     '
print(name.isspace())   # True

name = 'Hell oword'
print(name.istitle())     # False

复制代码

 

该类型总结:

存一个值          有序               不可变

 习题:

复制代码

写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
name = " aleX"
1)    移除 name 变量对应的值两边的空格,并输出处理结果
res = name.strip()
print(res)   #aleX
2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果

res1 = name.startswith('al')
res2 = name.strip().startswith('al')
print(res1)  # False
print(res12) # True
3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果

res = name.endswith('X')
print(res)  # True
4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
res = name.replace('l','p')
print(res)  # apeX
5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
res = name.split('l')
print(res)  # [' a', 'eX']
6)    将 name 变量对应的值变大写,并输出结果

res = name.upper()
print(res) # ALEX
7)    将 name 变量对应的值变小写,并输出结果

res = name.lower()
print(res)  # alex
8)    请输出 name 变量对应的值的第 2 个字符?
res = name[1]
print(res)  # a
9)    请输出 name 变量对应的值的前 3 个字符?
res = name[0:3]
print(res)  # al
10)    请输出 name 变量对应的值的后 2 个字符?

res = name[-2::]
print(res) #eX
11)    请输出 name 变量对应的值中 “e” 所在索引位置?

res = name.index('e')
print(res)  # 3
12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
str1 = 'oldboy'
res = str1[:-1]
print(res)

复制代码

 3、列表

1、用途:按照位置存放多个值

2、定义方式:在[ ]内用逗号分隔开多个任意类型的值

l = [111,2222,333,'xxx',[11,22,33]]   # l = list(...)
print(type(l))   #<class 'list'>
list数据类型转换,把可迭代的类型转成列表,可以被for循环遍历的类型

复制代码

res = list('hello')
print(res)   # ['h', 'e', 'l', 'l', 'o']
res =list({'k1':111,'k2':222})
print(res)     # ['k1', 'k2']
res = list(1000)   #TypeError: 'int' object is not iterable
print(list(range(10)))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

复制代码

 

3、常用操作+内置方法

优先掌握的操作:

 View Code

 

需要掌握的操作:

明日讲解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值