寒假自学(八)

希望所有温柔又可爱的人最后都能幸福❤

今日总结:

代码量 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异常类
  • 在开发时,如果满足特定业务需求时,希望抛出异常,可以:
    1. 创建一个Exception的对象
    2. 使用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

(略)

文件操作

  1. 打开文件
  2. 读、写文件
    • 将文件内容读入内存
    • 将内存内容写入文件
  3. 关闭文件
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-8UNICODE编码的一种编码格式

eval函数

eval()函数十分强大,将字符串当成有效表达式来求值并返回计算结果

input_str = input("请输入算术题:")

print(eval(input_str))

image-20210112120122480
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;
}
posted @ 2021-01-10 23:02  DemonSlayer  阅读(63)  评论(0编辑  收藏  举报