Python异常处理机制:try-except -else-finally:
1.try: 可能出现异常2.except 异常类型 as e: 出现异常执行3.else : 不出现异常执行4.finally: 无论有没有出现异常都会执行{相当于Java的try-catch}
try: num1 = int(input("请输入第一个数:")) num2 = int(input("请输入第二个数:")) sum = num1 / num2except ZerodivisionError as e: print('分母不能为0!') print(e)except ValueError as e: print('请输入int型数据') print(e) #invalID literal for int() with base 10: 'q'else: print('sum=', sum)finally: print('无论有没有出现异常都会执行')'''traceback模板打印异常信息 '''import tracebacktry: print('=============================')# 位置会改变 print(10/0)except : traceback.print_exc()
二、类和对象Python中一切皆对象
1.定义类与Java中一致,与Java不同的是,,类名不一定要与file名称一样
类的组成:类的属性,实例方法,静态方法,类方法
类的__init__(self)方法用于创建的对象进行初始化
class Student: native_place='江西理工' #类属性 def __init__(self,name,age): #name,age为实例属性 self.name=name #self.name 称为实例属性,进行了一个赋值 *** 作,将局部变量的name赋值给实例属性 self.age=age print("哈哈哈哈") #实例方法 def ff(self): print("这是一个实例方法") #类方法 @classmethod def cm(clsc): print("这是一个类方法") #静态方法 @staticmethod def sm(): print("这是一个静态方法")def show(): print("这是一个函数")print(ID(Student)) #1867676104832print(type(Student)) #<class 'type'>print(Student) #<class '__main__.fun'>#类的对象的调用stu=Student("张三",15)stu.ff()#Student.ff(stu)stu.gender='女' #动态绑定属性print(ID(stu))print(type(stu))print(stu.native_place)print(stu.gender)stu.show=show #动态绑定方法stu.show()
2.面向对象的三大特征面向对象的三大特征:封装,继承,多态
封装:self.__age=age(加两个下划线).在外部使用封装:stu._Student__age
继承:class 子类类名(父类1,父类2)
class Student: def __init__(self,name,age): self.name=name self.__age=age #封装 def show(self): print(self.name,self.__age)stu=Student('张三',19)stu.show()print(stu.name)print(dir(stu))print(stu._Student__age)class Person(object): def __init__(self,name,age): self.name=name self.age=age def info(self): print(self.name,self.age)class Student1(Person): def __init__(self,name,age,stuno): super().__init__(name,age) self.stuno=stunoclass Teacher(Person): def __init__(self,name,age,teachno): super().__init__(name,age) self.teachno=teachnostu1=Student1("小米",16,20)stu1.info()
3.特殊属性和方法:属性:1.dict:获得类对象或实例对象所绑定的所有属性和方法的字典
方法:1.len():通过重写_len_()方法,让内置函数len()的参数可以是自定义类型
2.add():通过重写_add_()方法,课使用自定义对象有“+”功能,重写可以是字符串的相加链接
3.new():用于创建对象
4.init():对创建的对象进行初始化
class A: passclass B: passclass C(A,B): def __init__(self,name,age): self.name=name self.age=age def __add__(self, other): return self.name+other.namex1=C("kk",21) #x为实例对象print(x1.__dict__) #{'name': 'kk', 'age': 21}print(C.__dict__) #{'__module__': '__main__', '__init__': <function C.__init__ at 0x0000013924A6E790>, '__doc__': None}a=10b=20c=a.__add__(b)print(c) #30x2=C("ss",18)print(x1.__add__(x2)) #kkssclass Person1: def __init__(self,name,age): print("__init__被调用执行了,self的ID值为{0}".format(ID(self))) self.name = name self.age = age def __new__(cls, *args, **kwargs): print("__new__被调用执行了,cls的ID值为{0}".format(ID(cls))) obj=super().__new__(cls) print("创建的对象的ID值为{0}".format(ID(obj))) return objp=Person1("zz",15)
三、模块1.Python *** 作文件
2.打开或新建文件,创建文件对象:file=open(filename[,mode,enCoding])
#mode:打开模式默认为只读,enCoding:默认文本文件中字符的编写格式为gbk
3.读,写文件
4.关闭资源
file=open("a.txt","w")file.write("kkkk")file.close()#文件对象的常用方法file1=open("b.txt","r")file1.seek(2)print(file1.read())print(file1.tell()) #13file1.close()
2.with语句可以自动管理上下资源,不论声明原因跳出with块。都能确保文件正确的关闭,以此达到释放资源的目的
with open("b.txt","r") as file: print(file.read())with open("背景.png","rb") as src_file: with open("logo.png","wb") as target_file: target_file.write(src_file.read()) #文件复制,不需要手动关闭
3.os和os.path模块os:模块是Python内置的与 *** 作系统功能和文件系统相关的模块,该模块中的语句执行结果通常与 *** 作系统有关,
在不同的 *** 作系统上运行,得到的结果可能不同
os与os.path模块用于对目录或文件进行 *** 作
1.os模块 *** 作目录相关函数
2.os.path模块 *** 作目录相关函数
import osprint(os.getcwd()) #D:\pycharm\workspace\NO4import os.pathprint(os.path.abspath("Demo02.py"))print(os.path.exists("Demo01.py"))print(os.path.exists("Demo09.py"))print(os.path.join("NO4","Demo01.py")) #NO4\Demo01.py
五、学生管理系统import osfilename = "students.txt"def main(): while True: menu() choice = int(input("请选择:")) if choice in [0, 1, 2, 3, 4, 5, 6, 7]: if choice == 0: answer = input("您确定要退出系统吗?y/n") if answer == "y" or answer == "Y": print("谢谢使用!!!") break else: continue elif choice == 1: print("录入学生信息") insert() elif choice == 2: print("查找学生信息") search() elif choice == 3: print("删除学生信息") delete() elif choice == 4: print("修改学生信息") modefy() elif choice == 5: print("排序") sort() elif choice == 6: print("统计学生总人数") total() elif choice == 7: print("显示所有学生信息") show() else: print("输入错误,请重新输入")def menu(): print("========================学生信息管理系统===================") print("--------------------------功能菜单-----------------------") print("\t\t\t\t1.录入学生信息") print("\t\t\t\t2.查找学生信息") print("\t\t\t\t3.删除学生信息") print("\t\t\t\t4.修改学生信息") print("\t\t\t\t5.排序") print("\t\t\t\t6.统计学生总人数") print("\t\t\t\t7.显示所有学生信息") print("\t\t\t\t0.退出") print("--------------------------------------------------------") if __name__ == '__main__': main()
1.录入学生信息def insert(): # 录入学生信息 studentList = [] while True: ID = input("请输入学生学号(1001):") if not ID: break name = input("请输入学生姓名:") if not name: break try: english = int(input("请输入学生英语成绩:")) python = int(input("请输入学生Python成绩:")) java = int(input("请输入学生Java成绩:")) except: print("输入无效,请重新输入") continue student = {"ID": ID, "name": name, "English": english, "Python": python, "Java": java} studentList.append(student) save(studentList) print("学生信息录入完毕") answer = input("是否继续添加y/n") if answer == "y" or answer == "Y": continue else: print("谢谢使用!!!") breakdef save(lst): try: stu_txt = open(filename, "a+", enCoding="utf-8") except: stu_txt = open(filename, "w", enCoding="utf-8") for item in lst: stu_txt.write(str(item) + "\n") stu_txt.close()
2.删除学生信息def delete(): while True: student_ID = input("请输入学生的ID:") if student_ID != "": if os.path.exists(filename): with open(filename, "r", enCoding="utf-8") as file: student_old = file.readlines() else: student_old = [] flag = False if student_old: with open(filename, "w", enCoding="utf-8") as wfile: d = {} for item in student_old: d = dict(eval(item)) # 将字符串转换成字典 if d['ID'] != student_ID: wfile.write(str(d) + "\n") else: flag = True if flag: print(f"ID为{student_ID}的学生信息已删除") else: print(f"没有找到ID为{student_ID}的学生") else: print("无学生信息") break show() answer = input("是否继续删除y/n") if answer == "y" or answer == "Y": continue else: print("谢谢使用!!!") break
3.查找学生信息def search(): student_query=[] while True: ID="" name="" if os.path.exists(filename): mode=input("按ID查询输入1,按姓名查询输入2:") if mode=='1': ID=input("请输入学生ID:") elif mode=='2': name=input("请输入学生姓名:") else: print("您的输入有误") search() with open(filename, "r", enCoding="utf-8") as rfile: student=rfile.readlines() for item in student: d=dict(eval(item)) if ID!="": if d['ID']==ID: student_query.append(d) elif name!="": if d['name']==name: student_query.append(d) else: print("暂未保存学生信息") return
4.修改学生信息def modefy(): show() if os.path.exists(filename): with open(filename, "r", enCoding="utf-8") as rfile: student_old = rfile.readlines() else: return student_ID = input("请输入要修改的学员的ID:") with open(filename, "r", enCoding="utf-8") as wfile: for item in student_old: d = dict(eval(item)) if d['ID'] == student_ID : print("找到学生信息,可以修改相关信息了!") while True: try: d['name'] = input("请输入学生姓名:") d['english'] = input("请输入学生英语成绩:") d['python'] = input("请输入学生Python成绩:") d['java'] = input("请输入学生Java成绩:") except: print("您的输入有误") else: break wfile.write(str(d) + "\n") print("修改成功") else: wfile.write(str(d) + "\t") answer = input("是否继续修改y/n") if answer == 'y' or answer == "Y": modefy()
总结 以上是内存溢出为你收集整理的Python学习NO3全部内容,希望文章能够帮你解决Python学习NO3所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)