栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

CSDN的Python技能树再体验(进阶语法)-啪,快乐,没了!

Python 更新时间:发布时间: 百科书网 趣学号

极简生活,极简编程,简到极致,就是完美!

进阶语法部分肝完了,有点麻木了,这是个体力劳动!

同样我的练习资料,放在最后,可直接点击下载。废话不多说,直接开始!

# 1.1 推导式:列表推导式:过滤列表留下奇数部分

scr_list = [1, 2, 3, 4, 5]

odd_list = [ele for ele in scr_list if ele % 2 != 0]

print(odd_list)
[1, 3, 5]
# 1.2 推导式:元组推导式:过滤元组,留下长度大于2的部分
src_tuple = ("Java", "C++", "AI", "Python")
res_tuple = (ele for ele in src_tuple if len(ele) > 2)
print(tuple(res_tuple))
('Java', 'C++', 'Python')
# 1.3 推导式:字典推导式:过滤字典,留下user1的部分
name_dict = {
    "user1": {
        "name": "张三",
        "age": 18
    },
    "user2": {
        "name": "李四",
        "age": 22
    }
}

user1_dict = {key: name_dict[key] for key in name_dict if "user1" == key}

print(user1_dict)
{'user1': {'name': '张三', 'age': 18}}
# 2. 三元表达式、三元组:写一个判断,奇数保留

test_list=[1,11,21,10,20]

def isOdd(num):
    return True if num %2!=0 else False

for ele in test_list:
    if isOdd(ele):
        print("{} 是奇数!".format(ele))
1 是奇数!
11 是奇数!
21 是奇数!
# 3. 断言:输入参数校验
def checkInput(number,string):
    assert type(number)==int
    assert type(string)==str
    print("输入参数正常!")
    
checkInput(100,"aaa")
# checkInput("aaa",110) #断言失败,AssertionError:
输入参数正常!
# 4.with-as语句:简化文件读写操作

import json

file_path = "data.txt"

with open(file_path, mode='r') as file:
    data_json = json.loads(file.read())
    print(data_json)
{'name': 'zhangsan', 'age': 18, 'hobby': 'baipiao'}
# 5.异常处理:try-execpt

try:
    print("start!")
    res = 1/0
    print("------")
except Exception as e:
    print(str(e))
finally:
    print("exit!")
start!
division by zero
exit!
常见异常
  1. AssertionError assert断言失败
  2. AttributeError 对象不存在你要访问的属性
  3. IOError 输入/输出异常
  4. importError 无法引入模块或者包
  5. IndentationError 语法错误,代码没有正确对齐
  6. IndexError index下标越界
  7. KeyError 字典不存在你要的key
  8. NameError 变量未赋值就使用
  9. SyntaxError 代码不能解释
  10. TypeError 类型与要求的不符
  11. UnboundLocalError 局部变量未定义就使用
  12. ValueError 传入一个调用者不期望的值
# 6.字符串方法(在基础语法部分写了)
# 7.lambda函数
add_fun=lambda x:x*10
print(add_fun(99))

#等价于
def add_fun2(x):
    return x*10
print(add_fun2(99))
990
990
# 8.文件:简单文件读写

# 1.read
json_path="data.txt"
with open(json_path,mode='r') as file:
    data=file.read()
    print(data)
# 2.write
output_path="out.txt"
with open(output_path,mode='w') as file2:
    file2.write(data)
file2.close()
file.close()
{
	"name":"zhangsan",
	"age":18,
	"hobby":"baipiao"
}
# 9.常用标准库

# 1.json库:dict转成json
import re
import os
import json

src_dict = {
    "user1": {
        "name": "张三",
        "age": 18,
        "job": "狂徒"
    },
    "user2": {
        "name": "李四",
        "age": 22,
        "job": "导演"
    }
}

print(src_dict)
print(type(src_dict))

# 1.1 dict->json_str
res_json = json.dumps(src_dict, ensure_ascii=False)
print(res_json)
print(type(res_json))

# 1.2 json_str-> dict
res2_json = json.loads(res_json)
print(res2_json)
print(type(res2_json))
# 2.os库:判断路径是否存在

isExists1 = os.path.exists("./data.txt")
isExists2 = os.path.exists("./data2.txt")

print(isExists1)
print(isExists2)

# 3.re库:正则匹配,切分时间字符串,拿到每一部分
src_str = "1970-01-01 01:02:03"
pattern = r'-| |:'
splits = re.split(pattern, src_str)
for ele in splits:
    print(ele)
{'user1': {'name': '张三', 'age': 18, 'job': '狂徒'}, 'user2': {'name': '李四', 'age': 22, 'job': '导演'}}

{"user1": {"name": "张三", "age": 18, "job": "狂徒"}, "user2": {"name": "李四", "age": 22, "job": "导演"}}

{'user1': {'name': '张三', 'age': 18, 'job': '狂徒'}, 'user2': {'name': '李四', 'age': 22, 'job': '导演'}}

True
False
1970
01
01
01
02
03
# 10.字符的编解码

unicode_str = u'你能看懂的!'
print(unicode_str)

utf8_str = unicode_str.encode(encoding='utf-8')
print(utf8_str)

res_str = utf8_str.decode("utf-8")
print(res_str)
你能看懂的!
b'xe4xbdxa0xe8x83xbdxe7x9cx8bxe6x87x82xe7x9ax84xefxbcx81'
你能看懂的!

我的代码及资料在:进阶语法.zip,下期见,byebye!

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/294265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号