Python学习NO3

Python学习NO3,第1张

概述PythonNO.3文章目录PythonNO.3一、异常处理机制1.try:可能出现异常2.except异常类型ase:出现异常执行3.else:不出现异常执行4.finally:无论有没有出现异常都会执行二、类和对象1.定义类2.面向对象的三大特征3.特殊属性和方法:三、模块四、文件1.文件读写 *** 作:2.wit PythonNO.3

文章目录PythonNO.3一、异常处理机制1.try: 可能出现异常2.except 异常类型 as e: 出现异常执行3.else : 不出现异常执行4.finally: 无论有没有出现异常都会执行二、类和对象1.定义类2.面向对象的三大特征3.特殊属性和方法:三、模块四、文件1.文件读写 *** 作:2.with语句3.os和os.path模块五、学生管理系统1.录入学生信息2.删除学生信息3.查找学生信息4.修改学生信息

一、异常处理机制

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.文件读写 *** 作:

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存