Python学习路程——Day07

Python学习路程——Day07

1、数据类型内置方法理论

		在Python中所有的数据类型本身就有一系列的操作方法,也都拥有它内置的功能,每一种功能都对应着一中操作方法。
	在Python中数据类型调用内置方法的统一句式为:句点符
    eg:
    int(内置方法)
   	'HaiMan'.(字符串内置方法)

2、整型内置方法与操作

整数类型转换:

'''
	将其他类型的数据转换为整数型
	int(其他数据类型)
	注意:int()强制转换只能转换纯数字的数据类型,一旦包含其他的数据类型就不行。
'''
str1 = '3168'
rs = int(str1)
print(rs)

结果展示:

进制数转换:

'''
十进制转换其他进制:
整数型也是不可变数据类型
'''
num = 368
rs = bin(num)
print(rs)
oct(num)
rs1 = oct(num)
print(rs1)
hex(num)
rs2 = hex(num)
print(rs2)

'''
其他进制数转换为十进制
'''
int(0b101110000)
int(0o560)
int(0x170)

'''
Python这门语言自身对数字的敏感程度很低(精确度低),如果需要精确计算需要借用模块,numpy......
'''

结果展示:

3、浮点型内置方法与操作

类型转换:

'''
float(其他数据类型)
	字符串里可以出现一个小数点,其它必须是纯数字。
'''
str1 = '13.14'
rs = float(str1)
print(rs, type(rs))

4、字符串内置方法与操作

索引取值:

'''
索引取值的起始位置是0,超出范围的直接报错
	变量名[下标]
'''
str1 = '8567.189.FBI'
str1[0]
print(str1[0], type(str1))
# 下标为-1的值为字符串的最后一个字符
print(str1[-1])

切片操作以及改变切片的方向:

'''
变量名[ : : ]	#第一个数字为起始位置,第二个为结束位置,第三个为步长
'''
str1 = '8567.189.FBI'
# 从下标为0的位置开始切取,(其实初始位置默认是0),可以不写
# 一直切取到下标为5的数据值前面的那个下标为4的数据值,只切取到下标5之前
# 2表示步长,隔一个取一个
rs = str1[0:5:2]
# 输出的结果为原字符串,可以得知,字符串属于不可变数据类型
print(str1)
# 如果取赋值之后的变量名即可输出86.
print(rs)

'''
切片操作默认是从左到右进行取值,想要改变方向,需要把步长设置为-1。不可以从负数取到正数(可以取到0)。
'''
str1 = '8567.189.FBI'
# 步长设置为-1才可以取到
rs = str1[-1:-5:-1]
print(rs)

# 如果冒号前后都不写值,默认全都要
rs = str1[:]
print(rs)

# 如果第一个冒号前面不写,默认值为0
rs = str1[:5]
print(rs)

# 如果第一个冒号后面不写,默认为字符串的总长度

#步长的默认值是1,表示每一个都取
print(str1[:5:])

统计字符串中字符的个数:

# 字符串长度获取方法len()
print(len(str1))

移除字符串首尾指定的字符

'''
.strip() 可以移除字符串首尾的字符,可以指定,如果不指定,默认是移除首尾的空格,指定的话,可以移除相应的字符,也可以指定移除左边lstrip(),或者指定移除右边rstrip().
'''
# 移除前后的全部空格
str1 = '   8567.189.FBI   '
print(str1.strip())

# 移除前后的全部$符号
str2 = '$$$8567.189.FBI$$$'
print(str2.strip('$'))

# 删除首尾的12字符串
str2 = '123.8567.189.FBI.321'
print(str2.strip('12'))

# 移除左边的字符串
str3 = '$$$8567.189.FBI$$$'
print(str3.lstrip('$'))

# 移除右边的字符串
str3 = '$$$8567.189.FBI$$$'
print(str3.rstrip('$'))

切割字符串中指定的字符

'''
split()方法可以通过指定的字符将一个字符串类型的数据切割为一个列表
'''
str1 = 'name|age|addr'
str1.split('|')

# 将变量str1通过识别‘|’解压赋值给sex、name、age三个变量
str1 = 'man|Jason|eleven'
sex, name, age = str1.split('|')
print(age, type(age))

# 从左到右切割指定个数   split() 默认的就是从左边开始切割
str1 = 'name|sex|addr|age|hobby'
rs = str1.split('|', maxsplit=2)
print(rs)

# 从右到左切割指定个数  maxsplit=1 表示最大切割个数
str1 = 'name|sex|addr|age|hobby'
rs = str1.rsplit('|', maxsplit=1)
print(rs)

字符串格式化输出

# format() 可以等价于占位符
# 在字符串中可以使用{},来代替原来所需的%s,在字符串后.format()中,填入自己所需的字符串即可
str1 = 'My name is {},welcome my hurt my {}'.format('HaiMan', 'Baby')
print(str1)

# format()占位符取名要做到见名知意
str2 = '亲爱的用户{name},您好!您本月共消费了{money}元,' \
       '巧的是,您上月也消费了{money}元,' \
       '再一次恭喜用户{name},成为我们的VIP用户!'.format(name='tony', money='8888')
print(str2)

# format() 索引取值并支持反复使用
str3 = '亲爱的用户{0},您好!您本月共消费了{1}元,' \
       '巧的是,您上月也消费了{1}元,' \
       '再一次恭喜用户{0},成为我们的VIP用户!'.format('tony', '8888')
print(str3)

'''
format()重点用法,获取用户输入的数据,完成字符串的格式化输出
'''
name = input('name>>>>:')
age = input('age>>>>:')
info_our = f'小伙子{name},你今年{age}岁了!'
print(info_our)

字符串中的大小写互换:

'''
大小写相关
	变量名.upper()
	变量名.lower()
'''
str1 = 'Open The Door! FBI!'
# 全部大写 之所以要用变量名接收,是因为字符串类型是不可变类型
rs = str1.upper()
print(rs)
# 全部小写 之所以要用变量名接收,是因为字符串类型是不可变类型
rs = str1.lower()
print(rs)

实际应用——图片验证码忽略大小写

 '''
 图片验证码:生成没有大小写统一的验证码 展示给用户看
    获取用户输入的验证码 将用户输入的验证码和当初产生的验证码统一转大写或者小写再比对
 '''
code1 = '98TftF'
print(code1)
user_code = input('请输入验证码:')
if user_code.upper() == code1.upper():
    print('验证通过!')
else:
    print('验证失败!')
    

判断字符串中是否是纯数字:

'''
变量名.isdigit()
'''
count = 0
age = '18'
while count < 3:
    digit = input('请输入你要猜的年龄:').strip()
    if digit.isdigit() == False:
        print('请输入数字!')
    elif digit != age:
        print('动下脑子!')
        count +=1
    else:
        print('您猜对了!')
        break

替换字符串中指定的内容:

'''
replace(' ',' ') 括号内里前面引号里是需要替换的内容,前面引号里是替换的内容
'''
str = 'My name is Jason,pleas love me!'.replace('Jason', 'tony')
print(str)

'''
可以从左向右按个数逐个进行替换
'''
str = 'My name is Jason,pleas love me!' \
      ',Jason,Jason,Jason,Jason'.replace('Jason', 'tony', 3)
print(str)

字符串的拼接:

'''
直接使用加号拼接
'''
str1 = 'hello'
str2 = 'world'
str3 = str1 +' '+ str2
print(str3)

'''
'需要加入字符串'.列表
可以加入字符,然后该列表变为字符串
'''
ls = ['hello', 'world','hello', 'world']
ls1 = '|'.join(ls)
print(ls1, type(ls1))

统计指定字符出现的次数

'''
变量名.count('需要统计的字符')
'''
str1 = 'Shark babay do do do do do do do'
rs = str1.count('do')
print(rs)

判断字符串的开头或者结尾

'''
变量名.startswith('需要判断的字符')
'''
str1 = 'To live or to die is a question'
is_TO = str1.startswith('To')
is_tion = str1.endswith('tion')
print(is_tion)
print(is_TO)

5、列表内置方法与操作

类型转换

'''
list()
只要是能够被for循环遍历的数据类型都可以被进行类型转换
'''
str1 = '123456'
rs = list(str1)
print(rs)

索引取值

'''
下标取值,小标从0开始
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(lst[4])
# 下标取-1的话是最后一个元素
print(lst[-1])

切片操作

'''
变量名:[ : : ]
'''
#第一个数字为起始位置,第二个为结束位置,第三个为步长
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
re = lst[0:3]
print(re)

统计列表中数据值的个数

'''
len(变量名)
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
re = len(lst)
print(re)

数据值修改

'''
变量名[下标] = 新的数据值 
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst[3] = 8
print(lst)

列表添加数据值

'''
在尾部添加数据
变量名.append('需要添加的数据值')
	也可以直接在列表中添加列表
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst.append('天将降大任于斯人也')
print(lst)

'''
在任意位置添加数据
变量名.(下标,'需要添加的数据')
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst.insert(4,'必将苦其心志')
print(lst)

扩展列表,合并列表

'''
需要使用的列表.extend(被合并的列表)
被合并列表,合并在最后
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst1 = [11, 22, 33, 44, 55, 66, 77]
lst.extend(lst1)
print(lst)
'''
	此操作相当于 for循环 + append()方法
'''
for i in lst1:
    lst.append(i)
print(lst)

删除列表数据

'''
del 变量名[下标]
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
del lst[3]
print(lst)

'''
变量名.remove(数据值)
'''
lst1 = [11, 22, 33, 44, 55, 66, 77]
lst1.remove(44)
print(lst1)

'''
变量名.pop(下标)
pop() 默认从尾部弹出数据
'''
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst1 = [11, 22, 33, 44, 55, 66, 77]
lst1.pop(3)
print(lst1)

6、可变数据类型与不可变类型

不可变数据类型

'''
字符串在调用内置方法之后并不会修改自身而是产生了一个新的结果
'''
str1 = '$$dadada$$'
str2 = str1.strip('$')
print(str2)

可变数据类型

'''
列表在调用内置方法之后修改的就是自身并没有产生一个新的结果
'''
lst1 = [11, 22, 33]
lst1[0] = 88
print(lst1)

练习

'''
基于列表充当数据库完成用户登录(拔高练习)  # 多个用户数据
   data_source = ['jason|123', 'kevin|321','oscar|222']
'''
# coding:utf-8
data_source = ['jason|123', 'kevin|321', 'oscar|222']
for i in data_source:
    username = input('username>>')
    password = input('password>>')
    data = i.split('|')
    # print(data)
    username1 = data[0]
    # print(username1)
    password1 = data[1]
    # print(password1)
    if username == username1 and password == password1:
        print('登录成功')
        break
    else:
        print('用户名或者密码有误')
        continue
posted @ 2022-09-29 23:37  负剑远游行归来仍少年  阅读(23)  评论(0)    收藏  举报