本文共 6253 字,大约阅读时间需要 20 分钟。
图书管理系统
数据库:持久化保存数据 (电脑关机不影响文件保存)
列表、元组、字典都是保存在内存中的,不是持久化数据
用户注册模块
def register(): username=input('输入用户名:') password=input('输入密码:') repassword=input('确认输入密码:') if password==repassword: #保存信息 with open(r'C:\Users\gszhu\Desktop\p1\users.txt','a') as wstream: wstream.write('{} {}\n'.format(username,password)) print('用户注册成功') else: print('密码不一致!')register()'''输入用户名:admin输入密码:123456确认输入密码:123456用户注册成功'''
用户登录模块
def login(): username=input('输入用户名:') password=input('输入密码:') if username and password: with open(r'C:\Users\gszhu\Desktop\p1\users.txt') as rstream: while True: user=rstream.readline() #admin 123456\n if not user: print('用户名或密码输入有误!') break input_user='{} {}\n'.format(username,password) 如果用户输入的跟文件中的内容一致则认为用户登录成功 if user==input_user: print('用户登录成功') breaklogin()'''输入用户名:admin输入密码:12345用户名或密码输入有误!'''
显示馆藏模块
def show_books(): print('------馆藏------') with open(r'C:\Users\gszhu\Desktop\p1\books.txt','r') as rstream: books=rstream.readlines() for book in books: print(book,end='')show_books()
此处报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 2: illegal multibyte sequence,感觉读不了汉字?
加了encoding='utf-8'后解决了该问题
def show_books(): print('------馆藏------') with open(r'C:\Users\gszhu\Desktop\p1\books.txt','r',encoding='utf-8') as rstream: books=rstream.readlines() for book in books: print(book,end='')show_books()'''------馆藏------龙族盗墓笔记斗破苍穹'''
此处就写了几个模块,不全
————————分割线————————
语法错误和异常
pycharm中报红色波浪线的即为语法错误,可以直接修改以避免
异常指程序员在写的时候没有发现任何问题,但在程序运行时报错 格式:xxxError
如:
def divide_(a,b): return a/bdivide_(1,0)print('--->')'''ZeroDivisionError: division by zero'''
存在问题:报异常后,下面的代码就不运行了 --->解决方法:异常处理
'''格式:try: 可能出现异常的代码except: 如果有异常执行的代码[finally: 无论是否存在异常都会被执行的代码] []表示可有可无'''
try不能单独存在,要结合except使用
def func(): n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) # + 加法1 sum=n1+n2 print('和是:',sum)func()print('--->')'''输入第一个数字:1输入第二个数字:啊Traceback (most recent call last): File "E:\...\pythom code\first\exception.py", line 20, infunc() File "E:\...\pythom code\first\exception.py", line 16, in func n2 = int(input('输入第二个数字:'))ValueError: invalid literal for int() with base 10: '啊''''
有异常之后下面的代码不会执行
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) # + 加法 sum=n1+n2 print('和是:',sum) except: passfunc()print('--->')'''输入第一个数字:s2Process finished with exit code 0#print不会运行'''
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) # + 加法 sum=n1+n2 print('和是:',sum) except: print('必须输入数字!')func()print('--->')'''输入第一个数字:a2必须输入数字!---> #print会执行'''
若存在多个异常,使用多个except进行区分
'''异常情况1 try: 有可能会产生多种异常 except 异常的类型1: print(...) except 异常的类型2: pass except ... '''
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) per=input('输入运算符号(+ - * /)') result=0 if per =='+': result=n1+n2 elif per =='-': result=n1-n2 elif per =='*': result=n1*n2 elif per =='/': result=n1/n2 else: print('符号输入错误!') print('结果是:',sum) except ZeroDivisionError: print('除数不能为零!') except ValueError: print('必须输入数字!')func()print('--->')
插:类
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) per=input('输入运算符号(+ - * /)') result=0 if per =='+': result=n1+n2 elif per =='-': result=n1-n2 elif per =='*': result=n1*n2 elif per =='/': result=n1/n2 else: print('符号输入错误!') print('结果是:',result) #文件操作 with open(r'C:\Users\gszhu\Desktop\aa2.txt','r') as wstream: print(wstream.read()) except ZeroDivisionError: print('除数不能为零!') except ValueError: print('必须输入数字!') except Exception: print('出错!') #但不知道是什么错func()print('--->')'''输入第一个数字:1输入第二个数字:2输入运算符号(+ - * /)+结果是: 3出错!--->'''
从最小的找起,儿子到爸爸到爷爷到太爷爷……,最大的放在最下面
从上往下比较
Exception往上提会有阴影出现
爸爸在,直接跳过儿子ValueError
总结:多个except,异常类型顺序需注意,最大的Exception放在最后
'''异常情况2:获取Exception的错误原因 try: 有可能会产生多种异常 except 异常的类型1: print(...) except 异常的类型2: pass except Exception as err: print(err) #err的内容即错误的原因'''
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) per=input('输入运算符号(+ - * /)') result=0 if per =='+': result=n1+n2 elif per =='-': result=n1-n2 elif per =='*': result=n1*n2 elif per =='/': result=n1/n2 else: print('符号输入错误!') print('结果是:',result) #文件操作 with open(r'C:\Users\gszhu\Desktop\aa2.txt','r') as wstream: print(wstream.read()) except ZeroDivisionError: print('除数不能为零!') except ValueError: print('必须输入数字!') except Exception as err: print('出错!',err)func()print('--->')'''输入第一个数字:1输入第二个数字:2输入运算符号(+ - * /)+结果是: 3出错! [Errno 2] No such file or directory: 'C:\\Users\\gszhu\\Desktop\\aa2.txt'--->'''
def func(): try: n1 = int(input('输入第一个数字:')) n2 = int(input('输入第二个数字:')) per=input('输入运算符号(+ - * /)') result=0 if per =='+': result=n1+n2 elif per =='-': result=n1-n2 elif per =='*': result=n1*n2 elif per =='/': result=n1/n2 else: print('符号输入错误!') print('结果是:',result) #文件操作 with open(r'C:\Users\gszhu\Desktop\p1\aa.txt','r') as wstream: print(wstream.read()) #列表操作 list1=[] list1.pop() except ZeroDivisionError: print('除数不能为零!') except ValueError: print('必须输入数字!') except Exception as err: print('出错!',err)func()print('--->')'''输入第一个数字:1输入第二个数字:2输入运算符号(+ - * /)+结果是: 3出错! pop from empty list--->'''
转载地址:http://lzegn.baihongyu.com/