Python

  • Python小程序-迭代输出多层嵌套列表中的每个元素并显示嵌套列表的层次结构

    ·

    程序代码: def iteration(list_name,indent = False,level = 0): ”’此函数的作用是迭代输出一个列表及其中的嵌套列表中的每个元素。 其包含三个参数,第一个参数是要传入的列表的名称,第二个参数是控 制是否使用缩进来显示列表中的嵌套的层次结构,第三个参数是控制输 出时是否首行缩进,其数值就是使用Tab缩进的次数”’ for i in list_name: if isinstance(i,list): iteration(i,indent,level + 1) #利用递归函数处理嵌套列表 else: if indent: print(‘\t’ * level,end=”) print(i) list1=[‘aa’,[‘bb’,[‘cc’,[‘dd’,’ee’]]],’ff’] #定义一个待处理的多层嵌套列表 iteration(list1,True,0) #调用iteration函数对其处理 程序输出: aa bb cc dd ee ff

    Read More

  • Python的异常处理机制

    ·

    程序在运行时难免会因为各种“意外因素”或程序本身的逻辑问题导致出错,严重时这将使程序彻底崩溃。解决这些问题常规的思路就是增加大量的逻辑判断语句来消灭种种可能引起问题的“意外因素”,但这无疑会使程序代码变得复杂而庞大,并且十分脆弱。有没有更好的解决办法呢?如果没有的话也不会有你看到的这篇文章了,哈哈哈~ 可以在错误(Python中称之为“异常”)产生时捕获异常,并按照给定的异常恢复代码尝试恢复异常。当然,如果你不捕获异常,那么当异常发生时,程序就必死无疑了。 先来看一个小程序。 给出一个文本文件“file.txt”,文件内容如下所示。要求:利用Python字符串的split()方法来分别获取每行字符串中”:”两边的字符,以第一行字符串为例,要求最终输出为此形式:aa said: aaa aa:aaa bb:bbb (ccc) dd:ddd ee:eee ff:fff:fff 编写程序如下。 file_data = open(‘file.txt’,’r’,encoding=’UTF-8′) #打开"file.txt"文件 for i in file_data: #利用for循环迭代读取"file.txt"文件的内容 (a,b) = i.split(‘:’,1) #利用字符串的split()方法,以":"为切割条件(只切割一次),对每行字符串进行分割操作,最后将生成的列表中的两个元素分别赋值给变量a、b。 print(a,end = ”) #输出变量a print(‘ said: ‘,end = ”) #输出字符串" said " print(b,end = ”) #输出变量b file_data.close() #关闭文件 看似程序的逻辑上是没有问题的,但是运行后会发现Python的解释器抛出了如下异常。 aa said: aaa #按照程序中预设的逻辑正确输出了处理后的字符串 bb said: bbb #正确输出 Traceback (most…

    Read More

  • Python利用递归函数迭代输出多层嵌套列表中的每个元素

    ·

    Python的列表很强大也很灵活,如何运用好列表就是一门大学问啦!在列表中经常见到下面这种形式: list1=[‘aa’,[‘bb’,[‘cc’,[‘dd’,’ee’]]],’ff’] 如果使用for循环迭代输出列表中的每个元素会得到下面的结果: >>> list1=[‘aa’,[‘bb’,[‘cc’,[‘dd’,’ee’]]],’ff’] >>> for i in list1: … print(i) … aa [‘bb’, [‘cc’, [‘dd’, ‘ee’]]] ff 可以看到,列表中嵌套的列表被整个当成一个元素输出了出来,那么该怎样做才能将嵌套的列表中的每个元素单独输出出来呢? 先看一下常规的实现方法——for循环嵌套。 >>> list1=[‘aa’,[‘bb’,[‘cc’,[‘dd’,’ee’]]],’ff’] >>> for i in list1: … if isinstance(i,list): … for a in i: … print(a) … else: … print(i) … aa bb [‘cc’, [‘dd’, ‘ee’]] ff 上面的例子中可以看到,使用for循环嵌套一层之后列表中的第一层嵌套的列表中的每个元素成功被输出出来了,但是第二层、第三层嵌套的列表中的每个元素依旧没有被依次输出。 这时候就需要用到for循环的多层嵌套了,但多层嵌套的for循环不仅写起来繁琐,读起来更要命。有没有其他更好的解决方法呢?当然有的——利用递归函数来轻松实现! >>> list1=[‘aa’,[‘bb’,[‘cc’,[‘dd’,’ee’]]],’ff’] >>> def…

    Read More

  • Python判断一个对象是否可迭代

    ·

    需要使用到collections模块的Iterable类型。 具体判断方法如下: >>> from collections import Iterable >>> isinstance(‘abc’, Iterable) # str是否可迭代 True >>> isinstance([1,2,3], Iterable) # list是否可迭代 True >>> isinstance(123, Iterable) # 整数是否可迭代 False</pre>

    Read More

  • Python小程序-写一个计算一元二次方程的程序函数

    ·

    题目要求: 请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:ax^2 + bx + c = 0的两个解。 程序代码: 这只是一个函数,如果你不调用它的话,是不会产生任何输出的。 import math def quadratic(a, b, c): if not (isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))): return ‘请输入数字’ else: d = -c + (b/2) ** 2 if d &lt; 0: return ‘无解’ else: x1 = round((math.sqrt(d) – (b/2)) / a , 2) x2 = round((-math.sqrt(d) -…

    Read More

  • Python小程序-根据用户输入的身高体重计算BMI值

    ·

    题目要求: 请根据BMI公式(体重除以身高的平方)按照用户输入的身高体重计算BMI指数,并根据BMI指数: 低于18.5:过轻 18.5-25:正常 25-28:过重 28-32:肥胖 高于32:严重肥胖 用if-elif判断并打印结果。 代码: height = float(input("请输入身高(单位,米):")) weight = float(input("请输入体重(单位,公斤):")) bmi = weight / (height ** 2) if bmi < 18.5: print("过轻") elif 18.5 <= bmi < 25: print("正常") elif 25 <= bmi < 28: print("过重") elif 28 <= bmi < 32: print("肥胖") else: print("严重肥胖") 小结: Python中求次方可以使用底数 ** 接指数,例如:求2的8次方,可以写成2 **…

    Read More

  • Python列表操作函数笔记

    ·

    定义一个列表。 >>> abc=[‘a’,’b’,’c’,’d’] 向列表尾部插入一个元素。 >>> abc.append(‘e’) >>> print(abc) [‘a’, ‘b’, ‘c’, ‘d’, ‘e’] 向列表中指定位置插入元素。 >>> abc.insert(2,’hi’) >>> print(abc) [‘a’, ‘b’, ‘hi’, ‘c’, ‘d’, ‘e’] 删除末尾元素。 >>> abc.pop() >>> print(abc) [‘a’, ‘b’, ‘hi’, ‘c’, ‘d’] 删除指定的元素。 >>> abc.pop(2) >>> print(abc) [‘a’, ‘b’, ‘c’, ‘d’]

    Read More

  • Python小程序-计算并输出成绩提高的百分比

    ·

    题目要求: 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出’xx.x%’,只保留小数点后1位。 代码: r = ((85 – 72)/72)*100 print(‘%2.1f%%’ % r) 小结: %2.1f代表格式化输出的浮点型字符串中,小数点前保留两位,小数点后保留一位,其中小数点前可省略不写,写成%.1f的形式也是可以的。

    Read More