zoukankan      html  css  js  c++  java
  • 寒假自学(八)

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

    今日总结:

    代码量 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;
    }
    
  • 相关阅读:
    Android框架: MVC MVP MVVM
    Apache Tomcat -8.0.45
    【MySQL】Database connections will be migrated
    MySQL(mysql-installer-community-5.7.18.1 Windows10)
    代码版本控制(Source Control)
    HTML 5
    微信小程序
    Android Studio 2.3.3 安装
    React Native
    2018面向对象程序设计(Java)第12周学习指导及要求
  • 原文地址:https://www.cnblogs.com/125418a/p/14280162.html
Copyright © 2011-2022 走看看