python文件操作

循环结构之for循环

"""
for循环能够实现的事情while循环都可以实现
但是for循环在很多时候语法更加简单快捷
"""

循环打印列表中每一个元素

name_list = ['jason', 'tony', 'kevin', 'jerry']
# while循环
count = 0

while count < 4:

  print(name_list[count])

  count += 1
# for循环 """ for循环特别擅长应用在循环取值方面 for 变量名 in 可迭代对象(字符串 列表 字典 元组): for循环体代码 for循环不需要添加结束条件 会随着取值的完毕自动结束 """ for name in name_list: print(name)

for与字符

res = 'hello world!'
# 当值没有明确的类别时 变量名可以取i、j、k、item等
for i in res:
    '''for循环字符串会将字符串里面单个单个字符依次赋值给变量名i(将所有字符挨个输出)'''
    print(i)

for与字典

user_dict = {'username': 'jason', 'password': 123, 'hobby': 'read'}
for k in user_dict:
    """for循环字典只会取出字典的key value是无法直接获取的"""
    print(k)

"""
容器类型
    内部能够存档多个元素的数据类型都可以称之为容器类型
        列表 字典 元组 集合
for循环针对容器类型都可以循环取值 在此基础之上还可以对字符串取值
"""

range用法

for i in range(0, 101):  # 本质是一个迭代器(忽略) 你可以简单的看成是一个列表
    print(i)

for i in range(5):
    print(i)  # 一个参数 默认从0开始(顾头不顾尾)

for i in range(5,10):
    print(i)  # 两个参数 第一个是起始位包含在内 第二个是终止位不包含(顾头不顾尾)

for i in range(0,250,25):
    print(i)  # 三个参数 最后一个是数字间隔  类似于产生等差序列

补充

如何查看数据类型拥有的方法
句点符
数据类型.
pycharm会自动列出该数据所有的方法

数据类型内置方法

整型int

int()
    1.数据类型转换
    2.其他进制字符串转换十进制数
n = '11'
print(int(n))  # 正确
n1 = '11.11'
print(int(n1))  # 报错 小数点整型无法转
n2 = 'jason'
print(int(n2))  # 报错 数字以外根本无法转换

# 将十进制转换成二进制
print(bin(100))  # 0b1100100
# 将十进制转换成八进制
print(oct(100))  # 0o144
# 将十进制转换成十六进制
print(hex(100))  # 0x64
"""
以后如果看到数字前面
    ob开头则是二进制数
    0o开头则是八进制数
    0x开头则是十六进制数
"""

# 其他机制转十进制
print(int('0b1100100', 2))
print(int('0o144', 8))
print(int('0x64', 16))
浮点型float
n1 = '11'
print(float(n1))  # 11.0
n2 = '11.11'
print(float(n2))  # 11.11
n3 = 'jason'
print(float(n3))  # 报错

字符串str

1.str可以将任意数据类型转换成字符串

res = 'hello world'
1.统计字符个数len
print(len(res))  # 11
2.索引取值[]
print(res[0])  # h
3.切片取值[]
print(res[1:5])  # ello  顾头不顾尾
4.步长(间隔)  2表示间隔一个取一个 不写默认是1没有间隔
print(res[1:8:2])  # el o
5.移除字符串首尾指定的字符strip
name = '$$jason$$'
print(name.strip('$'))  # jason
print(name.lstrip('$'))  # jason$$
print(name.rstrip('$'))  # $$jason
name1 = '  jason  '
print(len(name1))  # 9
print(len(name1.strip()))  # 5  括号内不写参数默认移除空格
username = input('username>>>:').strip()
if username == 'jason':
    print('登录成功')
else:
    print('登录失败')
6.按照指定的字符切割数据split
data = 'jason|123|teacher|read'
print(data.split('|'))  # ['jason', '123', 'teacher', 'read']
print(data.split('|', maxsplit=1))  # ['jason', '123|teacher|read']
print(data.rsplit('|', maxsplit=1))  # ['jason|123|teacher', 'read']
7.大小写转换upper/lower
res = 'Yu0My'
print(res.upper())  # 转大写  YU0MY
print(res.lower())  # 转小写  yu0my
"""图片验证码之所以不需要校验大小写 内部就是统一转大小写再比对"""
print(res.isupper())  # 字符串是否是纯大写
print(res.islower())  # 字符串是否是纯小写
8.判断字符串是否是纯数字isdigit
print('123'.isdigit())  # True
print('jason123'.isdigit())  # False
9.统计字符出现的次数count
res = 'my name is jason jason jason jason jason'
print(res.count('jason'))  # 5
10.替换指定的字符replace
res = 'my name is jason jason jason jason jason'
print(res.replace('jason', 'tony'))  # my name is tony tony tony tony tony
print(res.replace('jason', 'kevin', 2))  # my name is kevin kevin jason jason jason
11.按照指定的字符拼接字符串join
l = ['jason','123','read']
print('|'.join(l))  # jason|123|read
name1 = 'jason'
pwd1 = '123'
hobby1 = 'study'
print(name1 + '|' + pwd1 + '|' + hobby1)  # jason|123|study

列表list

只能够转支持for循环数据类型

l1 = [11, 22, 33, 44, 55, 66]
1.统计长度(元素的个数)len
print(len(l1)) # 6
2.索引取值[]
print(l1[0]) # 11
3.切片操作[]
print(l1[0:4]) # [11, 22, 33, 44] 顾头不顾尾
4.步长[]
print(l1[0:4:2]) # [11, 33] 顾头不顾尾
5.添加元素
5.1尾部追加元素append
l1.append('jason')
print(l1) # [11, 22, 33, 44, 55, 66, 'jason']
l1.append([111, 222, 333]) # 无论添加的元素是什么都只会当成列表的一个元素
print(l1) # [11, 22, 33, 44, 55, 66, 'jason', [111, 222, 333]]
5.2指定位置插入元素insert
l1.insert(0, 'jason')
print(l1) # ['jason', 11, 22, 33, 44, 55, 66]
l1.insert(2, [111, 222]) # 无论添加的元素是什么都只会当成列表的一个元素
print(l1) # ['jason', 11, [111, 222], 22, 33, 44, 55, 66]
5.3扩展列表extend
l1.extend([111, 222, 333, 444])
print(l1)
"""
如果不让你使用extend也完成扩展列表的操作 如何实现?
for i in [111,222,333,444]:
l1.append(i)
"""
6.删除元素
6.1通用的删除操作del
del l1[0]
print(l1) # [22, 33, 44, 55, 66]
6.2弹出元素pop
res = l1.pop(1)
print(l1, res) # [11, 33, 44, 55, 66] 22
6.3删除元素remove
res = l1.remove(22)
print(l1, res) # [11, 33, 44, 55, 66] None
7.统计元素出现的次数count
l2 = [11, 222, 33, 22, 33, 11, 11, 11, 22, 22, 33, 44, 44]
print(l2.count(11)) # 4
8.排序sort/sort(reverse=True)
l3 = [55, 44, 22, 33, 11, 99, 77, 88]
l3.sort() # 默认是升序
print(l3) # [11, 22, 33, 44, 55, 77, 88, 99]
l3.sort(reverse=True) # 倒序
print(l3) # [99, 88, 77, 55, 44, 33, 22, 11]

字典dict

字典内元素也是无序的
user_dict = {'username': 'jason', 'pwd': 123, 'hobby': 'read'}
1.统计长度(键值对的个数)len
print(len(user_dict)) # 3
2.按键取值get
print(user_dict['username']) # jason
print(user_dict['xxx']) # 键不存在会直接报错
print(user_dict.get('username')) # jason
print(user_dict.get('xxx')) # None 键不存在不会报错返回None
3.设置值(重点)[]
user_dict['username'] = 'jasonNB'
'''键存在则修改'''
print(user_dict) # {'username': 'jasonNB', 'pwd': 123, 'hobby': 'read'}
user_dict['age'] = 18
'''键不存在则新建'''
print(user_dict) # {'username': 'jasonNB', 'pwd': 123, 'hobby': 'read', 'age': 18}
4.删除值(字典的键值对是一个整体)pop
res = user_dict.pop('username')
print(user_dict, res) # {'pwd': 123, 'hobby': 'read'} jason
5.三个小方法keys/values/items
print(user_dict.keys()) # ['username', 'pwd', 'hobby']
print(user_dict.values()) # ['jason', 123, 'read']
print(user_dict.items()) # [('username', 'jason'), ('pwd', 123), ('hobby', 'read')]

集合(了解)

集合内元素是无序的
1.去重
集合内不允许出现重复的元素 会自动去重
2.关系运算
交叉并集
eg:共同好友 共同关注 共同点赞

f1 = {'jason', 'tony', 'kevin', 'jack'}
f2 = {'jason', 'tom', 'jerry', 'tony'}
# 1.求两个人共同好友&(ctrl+7)
print(f1 & f2) # {'tony', 'jason'}
# 2.求f1独有的好友-
print(f1 - f2) # {'jack', 'kevin'}
# 3.求f2独有的好友-
print(f2 - f1) # {'tom', 'jerry'}
# 4.求两个人所有的好友|
print(f1 | f2) # {'jason', 'jerry', 'tony', 'jack', 'tom', 'kevin'}
# 5.求两个人各自的好友^(ctrl+6)
print(f1 ^ f2) # {'kevin', 'jack', 'tom', 'jerry'}
# 6.父集 子集><
print(f1 > f2)
print(f1 < f2)

数据类型相关练习题

1.l = [11,22,33,44,55,66,77,88,99]
将列表中大于60的存入字典k1键对应的列表中
小于60的存入字典k2键对应的列表中
d = {'k1':[],'k2':[]}

l = [11, 22, 33, 44, 55, 66, 77, 88, 99]
d = {'k1': [], 'k2': []}
for i in l:
    if i > 60:
        d['k1'].append(i)
    else:
        d['k2'].append(i)
print(d)

2.l = [11,22,33,22,11,22,66,55,77,99]
对列表元素进行去重

l = [11,22,33,22,11,22,66,55,77,99]
l=set(l)
l=list(l)
print(l)

拔高:去重之后保持原来的顺序(不要惯性思维)

l = [11,22,33,22,11,22,66,55,77,99]
l1=[]
for i in l:
    if l1.count(i)<1:
        l1.append(i)
print(l1)

3.关系运算
有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合

pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
print(pythons&linuxs)

2. 求出所有报名的学生名字集合

pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
print(pythons|linuxs)

3. 求出只报名python课程的学员名字

pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
print(pythons-linuxs)

4. 求出没有同时这两门课程的学员名字集合

pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
print(pythons^linuxs)

 

posted @ 2021-08-13 19:02  雾雨黑白  阅读(79)  评论(0编辑  收藏  举报