寒假自学(八)
希望所有温柔又可爱的人最后都能幸福❤
今日总结:
代码量 | 400行 |
---|---|
博客量 | 一篇 |
所学时间 | 6小时左右 |
了解到的知识点 | python模块、抛出异常、Acwing每日一题 |
明后天休息,13号计划:
早上 | python爬虫 |
---|---|
下午 | python爬虫 |
晚上 | Acwing每日一题 |
具体内容:
异常
-
程序在运行时,如果
python解释器
遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常 -
程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise)异常
-
try
尝试,下方编写要尝试代码,不确定是否能够正常执行的代码 -
except
如果不是,下方编写尝试失败的代码
try:
num = int(input("请输入一个整数:"))
except:
print("请输入正确的整数")
print("-" * 50)
捕获不同类型的错误
-
当
python
解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型 -
在开发时,可以做一个未知错误的捕获
try:
num = int(input("输入一个整数:"))
result = 8 / num
print(result)
except ZeroDivisionError:
print("除0错误")
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
异常捕获的完整语法
当try
里的内容全部被正常执行后执行else
无论是否出现错误都会执行finally
try:
num = int(input("输入一个整数:"))
result = 8 / num
print(result)
except ZeroDivisionError:
print("除0错误")
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
else:
print("尝试成功")
finally:
print("无论是否出现错误都会执行的代码")
print("-" * 50)
- 异常的传递--当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方
- 如果传递到主程序,仍然没有异常处理,程序才会被终止
def demo1():
return int(input("输入整数:"))
def demo2():
return demo1()
# 在主程序捕获异常
try:
print(demo2())
except Exception as result:
print("未知错误 %s " % result)
python
中提供了一个Exception
异常类- 在开发时,如果满足特定业务需求时,希望抛出异常,可以:
- 创建一个
Exception
的对象 - 使用
raise
关键字抛出异常对象
- 创建一个
def input_password():
pwd = input("请输入密码:")
if len(pwd) >= 8:
return pwd
print("主动抛出异常")
# 创建异常对象
ex = Exception("密码长度不够")
raise ex
try:
print(input_password())
except Exception as result:
print(result)
模块是python程序架构的一个核心概念
from...import
,从某一模块中,导入部分工具
如果两个模块,存在同名函数,那么后导入的函数会覆盖先导入的函数
使用as
起别名
from...import*
一次性导入所有工具
使用__file__
查看文件路径
包
- 包是一个包含多个模块的特殊目录
- 目录下有一个特殊文件
__init__.py
- 包名的命名方式和变量名一致,小写字母+
_
,不能以数字开头
要在外界使用包中的模块,需要在__init__.py
中指定对外界提供的模块列表
从当前目录 导入 模块列表
from . import send_message
from . import receive_message
发布模块
创建setup.py
(略)
文件操作
- 打开文件
- 读、写文件
- 读将文件内容读入内存
- 写将内存内容写入文件
- 关闭文件
file = open("README", "a", encoding='UTF-8')
# text = file.read()
file.write("123 hello")
# print(text)
# print("-" * 50)
file.close()
一行一行地读
file = open("README")
while 1:
text = file.readline()
if not text:
break
print(text, end="")
file.close()
复制文件
file_read = open("README")
file_write = open("README[复件]", "w")
while True:
text = file_read.readline()
if not text:
break
file_write.write(text)
file_read.close()
file_write.close()
编码格式
-
计算机中使用1~6个字节来表示一个
UTF-8
字符,涵盖了地球上几乎所有地区的文字 -
大多数汉字会使用3个字节表示
-
UTF-8
是UNICODE
编码的一种编码格式
eval函数
eval()
函数十分强大,将字符串当成有效表达式来求值并返回计算结果
input_str = input("请输入算术题:")
print(eval(input_str))
https://www.acwing.com/problem/content/106/
当个数为偶数时,取中间两个数区间内的任意数均可
为奇数时,应取中位数。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int main()
{
int n;
cin>>n;
for (int i = 0 ; i < n; i ++) cin>>a[i];
sort(a,a+n);
int mid = a[n / 2];
long long ans = 0;
for (int i = 0; i < n; i++) ans += abs(mid - a[i]);
cout<<ans<<endl;
}