day 14 note 异常和常用模块

day 14 note 异常和常用模块

01. 数据持久化

1. 数据持久化

1) 需要持久化的数据通过一个文件来保存

2) 需要这个被持久化的数据的时候,不直接给值,而是从文件中读这个数据

3) 如果被持久化的数据发生了改变,需要把最新的值再重新写入文件中

num = 0               # 上一次执行时的次数

with open('resource/count.txt', encoding='utf-8') as f:
    num = int(f.read())

    num += 1
print(num)

with open('resource/count.txt', 'wt', encoding='utf-8') as f:
    f.write(str(num))

02. 登录注册系统


from fileManager import read_file, write_file


def read_file(file_url: str):
    """
    获取指定文件中的内容
    :param file_url: 需要读取内容的文件的路径
    :return: 文件中的文本内容
    """
    try:
        with open(file_url, encoding='utf-8') as f:
            return f.read()
    except:
        print('打开文件失败!')
        return None

def write_file(file_url: str, data: str, mode='w'):
    """
    将指定数据写入到指定文件中
    :param file_url: 指定文件的路径
    :param data: 需要写入到文件中的内容
    :param mode: 打开方式,默认是 'w'
    :return: None
    """
    with open(file_url, mode, encoding='utf-8') as f:
        f.write(data)
        

def show_main_page():
    page = read_file('./resource/main_page.txt')
    while True:
        # 显示主页面
        print(page)
        # 给出选项
        value = input('请选择(1~3):')
        # 根据选择做不同的事情
        if value == '1':
            # print('登录')
            login()
        elif value == '2':
            # print('注册')
            register()
        elif value == '3':
            print('退出')
            return
        else:
            print('其他情况')


def login():
    # 1.输入账号和密码
    user_name = input('请输入账号:')
    password = input('请输入密码:')
    # 2.判断登录是否成功
    # 0)获取之前已经注册过的账号和对应的密码
    users = eval(read_file('resource/users.txt'))
    # 1)判断输入的账号是否是已经注册过的账号
    if user_name not in users:
        print('登录失败!账号不存在!')
        return
    # 2)判断输入的密码是否和注册时输入的密码一致
    if users[user_name] != password:
        print('登录失败!密码错误!')
        return
    print('登录成功!')


def register():
    # 1.输入账号和密码
    user_name = input('请输入账号:')
    password = input('请输入密码:')
    # 2.判断账号是否可以注册
    # 1)先获取之前已经注册过的所有的账号
    all_user = eval(read_file('resource/users.txt'))
    # 2)看当前输入的账号是否在已经注册过的账号里面
    if user_name in all_user:
        print('注册失败!该账号已经注册!')
        return
    # 3.注册
    all_user[user_name] = password
    write_file('resource/users.txt', str(all_user))
    print('注册成功!')

if __name__ == '__main__':
    show_main_page()


03. 异常捕获

1. 异常

程序报错又叫程序出现异常;如果在执行程序的过程中,出现异常,那么这个程序会在出现异常的地方结束。

2. 异常捕获

异常捕获就是让程序在出现异常的时候不崩溃,可以继续执行。

什么时候捕获异常:明明知道某段代码可能会出现异常,但是又没有办法或者必要去通过修改这段代码来避免异常的时候,就可以使用异常捕获

1)语法一(捕获所有类型的异常):
try:
代码段1(需要捕获异常的代码段)
except:
代码段2(出现异常后会执行的代码段)
finally:
代码段
其他语句…

执行过程:先执行代码段1,如果没有出现异常不执行代码2直接执行后面其他语句;
如果出现异常,程序不崩溃,马上执行代码段2,执行完后才执行后面其他的语句。

2)语法二:
try:
代码段1(需要捕获异常的代码段)
except 异常类型:
代码段2(出现指定异常后会执行的代码段)
finally:
代码段

3)语法三
try:
代码段1(需要捕获异常的代码段)
except (异常类型1, 异常类型2,…):
代码段2(出现指定异常后会执行的代码段)
finally:
代码段

4)语法四
try:
代码段1(需要捕获异常的代码段)
except 异常类型1:
代码段11
except 异常类型2:
代码段22
except 异常类型3:
代码段33

finally:
代码段

3. 关键字 finally

所有的try-except结构后面都可以跟一个finally, 它不影响原来代码的执行。
finally后面的代码段,不管前面的try-except发生什么,都会执行 (包括出现异常没有捕获到)


# 案例1:


try:

age = int(input('请输入年龄:'))

except:

print('输入的年龄有误!')

print('游戏!')

# 案例2:

try:

age = int(input('请输入年龄:'))

print([1, 2][3])

print('=======')

print('-------')

except:

print('出现异常!')


04. 常用系统模块

1.随机模块

**import random 导入模块 **



1) randint(m, n)  - 产生[m, n]的随机整数

print(random.randint(10, 20))



2) random()  -  产生[0, 1)的随机小数

print(random.random())

产生[0 ~ 100)的随机小数

print(random.random()*100)

产生[10, 20)的随机小数

print(random.random()*10 + 10)

产生[50, 120)的随机小数

print(random.random()*70+50)



3) random.shuffle(列表) - 洗牌(随机打乱列表中元素的顺序)

nums = [10, 20, 30, 40, 50, 60]
random.shuffle(nums)
print(nums)





4) random.choice(列表)  - 从列表中随机获取一个元素

random.choices(列表, k=N)    -   从列表中随机取N个元素

nums = [10, 20, 30, 40, 50, 60]
print(random.choice(nums))

print(random.choices(nums, k=2))
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值