首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python学习入门基础 — 第八章 文件读写操作、模块和包、异常

,因为函数重名并没有任何提示,出现问题不好排查 1.3 模块搜索顺序 Python 解释器在 导入模块 ,会: 搜索 当前目录 指定模块名文件,如果有就直接导入 如果没有,再搜索 系统目录...异常概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序执行,并且提示一些错误信息,这就是 异常 程序停止执行并且提示错误信息 这个动作,我们通常称之为:抛出(raise)异常...: print("未知错误 %s" % result) Python 解释器 抛出异常 ,最后一行错误信息一个单词,就是错误类型 异常类型捕获演练 —— 要求用户输入整数 需求 提示用户输入一个整数...注意 当前函数 只负责 提示用户输入密码,如果 密码长度不正确,需要其他函数进行额外处理 因此可以 抛出异常,由其他需要处理函数 捕获异常 4.2 抛出异常 Python 中提供了一个 Exception...异常类 在开发,如果满足 特定业务需求,希望 抛出异常,可以: 创建 一个 Exception 对象 使用 raise 关键字 抛出 异常对象 需求 定义 input_password 函数

1.3K30

【C语言基础】:函数递归详解

递归函数定义 递归函数定义通常包括以下几个要素: 基本情况(Base Case):递归函数必须包含一个或多个基本情况,即能够直接解决最简单问题函数达到基本情况递归将停止。...基本情况提供了递归终止条件。 递归调用(Recursive Call):递归函数在解决复杂问题时会调用自身,但每次调用时问题规模会减小,直到达到基本情况。...递归调用是递归函数实现关键,它使得函数能够重复地处理子问题问题规模减小:递归调用必须保证问题规模在每次递归都减小,否则递归可能无法终止。通过每次递归调用都将问题规模减小,最终达到基本情况。...栈空间耗尽,程序就会因为无法继续压入新栈帧而抛出“栈溢出”异常。 另一种常见导致递归栈溢出原因是没有正确递归终止条件。...定义递归基:输入整数n小于10,即只有一位数,直接返回该数字作为结果。 定义递归处理过程:通过递归调用函数,将问题分解为计算n最后一位数字和剩余数字之和结果。

56910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    内部类、异常以及 LeetCode 每日一题

    非静态内部类方法访问某个变量:优先在方法内寻找局部变量;接着在内部类找;接着在外部类找;如果依然不存在,则编译错误,提示找不到改变量。... catch 后面的参数和发生异常类型不匹配,捕获异常失败,程序会终止,并由系统抛出异常提示。 可以采用多重 catch ,分别对不同类型异常进行处理,类似于 if - else if。...2.4 声明异常 2.4.1 throws 关键字 一个方法可能存在异常,而此时自身又无法更好处理,可以交给外界处理。此时用throws声明并抛出异常。...2.5 手动抛出异常 除了系统自动抛出异常外,有些问题需要开发者手动抛出异常。...最后一个单词长度 给定一个仅包含大小写字母和空格 ' ' 字符串,返回其最后一个单词长度。如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格字符串。

    73020

    Linux常用命令常见选项

    代表就是一个任意字符,至少一个字符 [ ] 代表一个字符,取值范围在[ ]中 [1234 ] 匹配1,2,3,4中任意一个 [a-g] 匹配从a到g范围内任意一个 cd命令 cd是英文单词 change...它与之前几个命令不同是,cd是BASH内置命令,没有帮助文档与相关手册。 所以在使用$which cd时候是看不到它二进制路径。因为系统中不存在 cd 命令二进制文件。...mkdir命令 创建一个目录 选项 功能 [-p] 可以递归创建目录 新建目录名称不能重名 rm命令 删除文件或目录 选项 功能 [-f] 强制删除,忽略不存在文件,无需提示 [-r] 递归删除目录下内容...,删除文件夹就用这个选项 cp命令 拷贝文件或者目录,类似DOS中copy 选项功能[-i]interactive互动,说白了就是覆盖文件时有提示[-r]如果cp跟上目录,那么将会递归拷贝目录下所有子目录和文件...中 搜索Hello_world这个单词 在多个文件中查找 常用两种模式查找 参数 功能 ^hello 行首,搜索以hello开头行 world$ 行尾,搜索以world结束行 几个常用符号

    94530

    周末补习(一)trie 树

    对于未命中字符,只需要查询若干字符就可。 基本数据结构 首先 Trie 树,是一棵树。树是由需要建立所有词构成。 假设我们有,bee 、sea、 shells,she,sells,几个单词。...我们可以使用这几个单词构建一棵树。 通过图片我们就可以直观看出 Trie 数据结构。这个棵树是由若干节点,链接而成,节点可以指向下一个节点,也可以指向空。...每个节点都含有一个数组,数组大小为R,R 是数组基数,对应每个可能出现字符。R 选取取决于报错字符类型,如果只包含英文则256 就可以了。如果是中文就需要 65536。...我们在搜索框里面输入一个时候,通常会收到提示列表如下图: ? 输入 flink 时候,搜索引擎会提示联想出用户可能输入,提升用户体验。 有了上面的 Trie 树介绍。...回到我们原有的例子,假设词库里面有单词 bee 、sea、 shells,she,sells。如果用户输入 se 两个字符,我们应该会向用户提示 se 开始词:sea 和 sells。 ?

    56430

    Java入门基础学习总结

    递归 递归就是:A方法调用A方法!就是自己调用自己 利用递归可以用简单程序来解决一些复杂问题。...它通常把一个大型复杂问题层层转化为一个与原问题相似的规模较小问题来求解,递归策略只需少量程序就可描述出解题过程所需要多次重复计算,大大地减少了程序代码量。...稀疏数组 一个数组中大部分元素为0,或者为同一值数组,可以使用稀疏数组来保存该数组。...例如要打开一个不存在文件一个异常就发生了,这些异常在编译不能被简单地忽略 运行时异常:运行时异常是可能被程序员避免异常。与检查性异常相反,运行时异常可以在编译被忽略。...错误ERROR:错误不是异常,而是脱离程序员控制问题。错误在代码中通常被忽略。例如,栈溢出一个错误就发生了,它们在编译也检查不到

    32610

    Linux学习笔记——详解Linux常见命令及终端使用技巧

    ,相应功能英文单词单词缩写 [-options]:选项,可用来对命令进行控制,也可以省略 parameter:传给命令参数,可以是 零个、一个 或者 多个 [] 代表可选意思 查阅命令帮助信息...提示 现阶段只需要 知道 通过以下两种方式可以查询命令帮助信息 先学习常用命令及常用选项使用即可,工作中如果遇到问题可以借助 网络搜索 --help command --help 说明: 显示...当前目录 所在目录位置 绝对路径 在输入路径,最前面是 / 或者 ~,表示从 根目录/家目录 开始具体目录位置 创建和删除 touch 创建文件或修改文件时间 如果文件 不存在,可以创建一个空白文件...,无需提示(即使删不存在,也不会有提示信息) -r 递归地删除目录下内容,删除文件夹 必须加此参数 拷贝和移动文件 tree tree [目录名] tree 命令可以以树状图列出文件目录结构...命令 cp 原文件 目标文件(如果目标文件名不需要改变,则只需要指明路径即可) 选项 含义 -i 覆盖文件前提示(不然不会提示) -r 若给出源文件是目录文件,则 cp 将递归复制该目录下所有子目录和文件

    1.1K20

    十分钟彻底搞定python异常处理

    num = int(input("输入一个整数:")) # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常 赋值错误一个单词作为关键字进行处理 result =...finally: print("无论是否出现错误都会执行代码") print("==="*20) 异常传递: 函数/方法执行出现异常,会将异常传递给函数/方法调用一方 如果传递到主程序...,仍然没有异常处理,程序才会被终止 所以说,只需要在主程序中做一个异常处理就可以完成代码异常处理 示例代码: def demo1(): return int(input("输入整数:")) def...print("程序出现了%s错误"%(result)) 抛出raise异常: 主动抛出异常 python中提供了一个 Exception 异常类 在开发,如果满足特定业务需求,希望抛出异常,可以...创建一个 Exception对象 使用 raise关键字抛出异常对象 需求案例: 定义 input_password函数,提示用户输入密码 如果用户输入长度<8,抛出异常 如果用户输入长度>=8 返回输入密码

    51930

    递归递归之书:引言到第四章

    基本情况返回并且帧从调用堆栈中弹出,其下面的帧有自己局部变量number,其值始终为1。执行返回到调用堆栈中一个递归调用后代码会被执行❹。这就是导致数字升序出现原因。...在文件夹中搜索特定文件名是一个递归问题:您搜索文件夹,然后递归搜索文件夹子文件夹。没有子文件夹文件夹是导致递归搜索停止基本情况。...我们可以将查找斐波那契数问题分解为查找两个较小斐波那契数问题。我们知道前两个斐波那契数都是 1,所以一旦子问题足够小,就可以得到基本情况答案。...在这个过程中,你将学习到递归函数参数中头尾技术。尝试提出递归解决方案,我们还会问自己三个问题:什么是基本情况递归函数调用传递了什么参数?递归函数调用传递参数如何接近基本情况?...让我们问一下关于floodFill()函数三个递归算法问题: 什么是基本情况 x 和 y 坐标是不是旧颜色像素,或者在图像边缘递归函数调用传递了哪些参数?

    62610

    类加载机制总结

    ,如果类没有进行过初始化,则需要先触发其初始化 当初始化一个时候,如果发现其父类没有初始化,那么先触发父类初始化 虚拟机启动,用户需要指定一个要执行主类(含main()方法类),虚拟机就会先初始化这个主类...使用JDK1.7动态语言支持,如果一个java.lang.invoke.MethodHandle实例最后解析结果REF_getStatic,REF_putStatic 、REF_invokeStatic...接口初始化和类初始化不同: 一个类初始化时,要求其父类已经初始化了 但是一个接口初始化时,并不要求父接口全部完成初始化。只有只用到父接口(比如使用父接口中常量),才会初始化父接口。...否则,在类C实现接口列表及他们父接口之中递归查找是否有简单名称和描述符都与目标相匹配方法,如果存在匹配方法,说明类C是一个抽象,这时查找结束,抛出java.lang.AbstractMethodError...由于接口中所有方法默认都是public,所以不存在访问权限问题,因此接口方法符号解析应当不会抛出java.lang.IllegalAccessError异常

    51920

    函数出错返回数据类型

    对于查找函数(get、find、select、search、query 等单词开头函数),数据不存在是一种正常行为,并非是一种异常情况,所以返回表示不存在语义NULL值比返回异常更合理。...函数返回数据是字符串类型或者集合类型时候,我们可以用空字符串或空集合替代 NULL 值,来表示不存在情况。这样,我们在使用函数时候,就可以不用做 NULL 值判断。...抛出异常对象 最常用函数出错处理方式是抛出异常异常有两种类型:受检异常和非受检异常。 至于孰好孰坏,只需要根据团队开发习惯,在同一个项目中,制定统一异常处理规范即可。...获取信息失败会影响后续逻辑处理,并不是我们期望,此时便是一种异常行为,最好抛出异常。 我们需要明确地告知调用者异常不可直接吞掉。...4.2 需要包裹成新异常抛出条件 依赖抽象而非实现编程,即调用者调用函数只知道功能不需要知道底层实现时,直接抛出底层异常实际上暴露了实现细节。

    2.2K20

    【数据结构与算法】递归、回溯、八皇后 一文打尽!

    递归算法核心思想在于将一个问题分解为一个或多个基本情况一个或多个规模较小但同样结构问题。这些子问题将继续被分解,直到达到基本情况,然后逐层返回结果,最终解决原始问题。...第二部分:递归算法基本原理 在使用递归算法,我们需要明确两个关键要素:基本情况递归关系。 基本情况基本情况是指递归过程中终止条件。问题达到基本情况递归停止,直接返回结果。...在迷宫问题中,可以定义一个递归函数来搜索路径,每次尝试从当前位置向上下左右四个方向移动,直到达到终点或无法继续移动为止。 接下来,我们需要考虑递归函数递归关系。...它基本思想是通过尝试不同选择,发现当前选择并不是有效解决方案,回溯到上一步并尝试其他选择,直到找到所有的解或者确定不存在解。...满足结束条件递归函数停止递归,回溯到上一步进行其他选择。 回溯:在递归函数中,发现当前选择不是有效解决方案,需要回溯到上一步并尝试其他选择。

    21810

    一种绝对提高开发水平方法

    NoSuchMethodException //抽象方法错误,当应用试图调用抽象方法抛出 java.lang.AbstractMethodError //断言错误,用来指示一个断言失败情况...,违反域或方法可见性声明 java.lang.IllegalAccessError //不兼容类变化错误,正在执行方法所依赖类定义发生了不兼容改变抛出异常 java.lang.IncompatibleClassChangeError...//实例化错误,构造一个抽象类或者接口抛出异常 java.lang.InstantiationError //内部错误 java.lang.InternalError...java.lang.NegativeArraySizeException //属性不存在异常访问某个类不存在属性抛出异常 java.lang.NoSuchFieldException...当应用试图在要求使用对象地方使用了null抛出异常 java.lang.NullPointerException //数字格式异常 java.lang.NumberFormatException

    51331

    教妹学 Java 第 41 讲:异常处理机制

    异常是指中断程序正常执行一个不确定事件。异常发生,程序正常执行流程就会被打断。...比如说: 程序在试图打开一个不存在文件; 程序遇到了网络连接问题; 用户输入了糟糕数据; 程序在处理算术问题没有考虑除数为 0 情况; 等等等等。 挑个最简单原因来说吧。...从单词释义上来看,error 为错误,exception 为异常,错误等级明显比异常要高一些。 从程序角度来看,也的确如此。...checked 异常(检查型异常)在源代码里必须显式地捕获或者抛出,否则编译器会提示你进行相应操作;而 unchecked 异常(非检查型异常)就是所谓运行时异常,通常是可以通过编码进行规避,并不需要显式地捕获或者抛出...ClassNotFoundException:动态加载 Class 对象时候找不到对应抛出异常;原因可能是要加载不存在或者类名写错了。

    31030

    iOS 面试策略之算法基础6-7节

    数据溢出:因为动态规划是一种由简至繁过程,其中积蓄数据很有可能超过系统 当前数据类型最大值,从而导致程序抛出异常。 这两点,我们在上面这道求解斐波拉契数列第100个数题目就都遇到了。...当然对于这两点我们也有相应解决方法。对付栈溢出,我们可以把递归写成循环形式(所有的递归都可改写成循环);对付数据溢出,我们可以在程序每次计算中,加入数据溢出检测,适时终止计算,抛出异常。...比如 pr1ce -> price,只需要将 1 替换为 i 即可,所以两个单词之间距离为1。...删除一个字符:假如已知 wordDistance("abc", "abdf") ,那么 “abce” 只需要删除一个字符到达 “abc” ,然后就可以得知 “abce” 到 “abdf” 之间距离。...,在做一些相应优化,就可以准确识别出扫描单词

    62130

    程序出错你让它返回啥?

    无论使用那种编程语言,都会面临程序出错问题,程序出错应该返回什么呢?比如错误码、NULL 值、特殊值(比如 -1)、空对象(比如空字符串、空集合)、抛出异常,这些选项,你会分别在什么情况下使用呢?...我个人觉得,尽管返回 NULL 值有诸多弊端,但对于以 get、find、select、search、query 等单词开头查找函数来说,数据不存在,并非一种异常情况,这是一种正常行为。...如果项目从零开始开发,并没有统一约定和可以参考代码,那你选择两者中任何一种都可以。你只需要在函数定义地方注释清楚,让调用者清晰地知道数据不存在时候会返回什么就可以了。...函数返回数据是字符串类型或者集合类型时候,我们可以用空字符串或空集合替代 NULL 值,来表示不存在情况。这样,我们在使用函数时候,就可以不用做 NULL 值判断。...是否需要包装成新异常抛出,看上层代码是否能理解这个异常、是否业务相关。如果能理解、业务相关就可以直接抛出,否则就封装成新异常抛出

    50020

    大数据分析工程师面试集锦2-Scala

    4)易于并发操作,不修改变量也就不存在锁线程问题,可以放心地用于并发编程。...例如,如果一个方法抛出异常,则异常返回值类型就是Nothing(虽然不会返回)。 7 你知道vararg参数用法吗?...正常递归,每一次递归操作,需要保存信息到堆栈中,递归步骤达到一定量时候,就可能会导致内存溢出,而尾递归,就是为了解决这样问题,在尾递归中所有的计算都是在递归之前调用,也就是说递归一次计算一次,编译器可以利用这个属性避免堆栈错误...这个问题主要考察集合基础知识,说出常用集合,并对每种集合特征加以描述就可以了。...Scala通过捕获异常,捕获后可以进行处理,或者抛出给上游程序,抛出异常方法和 Java一样,使用 throw 关键字。

    2.1K20

    小谈C#异常

    但是仅仅只有try还是不够,我们可以看到错误窗口中显示了这么一个错误提示: 显而易见,VS提示我们还需要catch或finally代码块,因为处理异常但没有执行处理部分是没有任何意义。...System.IndexOutOfRangeException 这个异常和上一个异常一样,我们一般不会进行抛出和捕获,这时因为这个异常通常是我们使用无效索引值访问数组、列表以及任何可索引序列中元素引发...System.StackOverflowException 执行堆栈溢出时会抛出异常,这通常意味着递归出错,代码有太多嵌套方法调用。...这个异常是无法捕获从.NET 2.0起就没办法捕获,这意味着抛出异常几乎没有其他选择。默认情况下,代码执行过程将被终止。...System.InvalidCastException 执行了无效强制转换或显式转换引发异常

    91110

    递归递归之书:第五章到第九章

    但对于有 50 本书书架进行二分搜索只需要 6 步,而对于有 100 本书书架只需要 7 步。 让我们对我们二分搜索实现提出三个递归问题: 什么是基本情况搜索长度为 1 项目范围。...合并四张卡只需要四个步骤。 让我们问一下我们三个递归算法问题关于归并排序算法: 什么是基本情况? 给定一个要排序列表,其中有零个或一个项目,已经按排序顺序排列。...这个版本一个好处是,在将问题分解为多个子问题,可以将子问题分配给其他计算机并行处理。 二分搜索算法通过不断缩小搜索范围方式在排序数组中搜索。...让我们问一下关于getBalancedParens()函数三个递归算法问题: 什么是基本情况剩余要添加到正在构建字符串中开放和关闭括号数量达到0。...这些程序有两个递归情况,n参数为偶数或奇数。这没问题:只要所有递归情况都将递归函数调用返回值作为它们最后操作,函数就可以使用尾调用优化。

    35810

    Python面试常见问题集锦:基础语法篇

    答案:函数递归调用是指函数在其内部调用自身过程。递归通常用于解决具有重复子问题问题,如计算阶乘、遍历树形结构等。...递归调用需满足两个条件:基本情况(base case)和递归情况(recursive case)。基本情况递归结束条件,递归情况则是将问题分解为规模更小同类问题。...例如,计算阶乘递归函数:pythondef factorial(n): if n == 0 or n == 1: # 基本情况 return 1 else: # 递归情况...答案: sys.path是一个列表,包含了Python解释器在导入模块时会查找目录列表。使用import语句导入模块,Python会按照sys.path中目录顺序依次查找对应.py文件或包。...答案:闭包是Python中一种特殊函数,它记住了定义它词法环境,即使在其外部作用域已经不存在仍能访问那些变量。简单来说,闭包是由一个内部函数和其外部作用域(包括变量和参数)组成整体。

    13110
    领券