day9作业:路径处理和异常捕获

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43264177/article/details/102763694

第一题

1、写出异常处理语句中try作用是什么,except,else,finally下面的代码分别在什么时候会执行?(简答题)

第二题

2、改善上节课的注册程序,打开文件的读取数据的时候,如果文件不存在会报错,请通过try-except来捕获这个错误,然后进行处理

第三题

3、优化之前作业的石头剪刀布游戏,用户输入时,如果输入非数字会引发异常,请通过异常捕获来处理这个问题。
在这里插入图片描述

# 第二题
def work2():
    try:
        # 读取文件中注册用户的数据
        with open('users.txt', 'r', encoding='utf8') as f:
        # 读取内容
         data = f.read()
        # 识别字符串中的列表
        users = eval(data)
    except FileNotFoundError:
        # 文件不存在,将users设置为一个空列表
        users = []
        while True:
            username = input('请输入新账号:')
            for user in users:
                if username == user['user']:
                    print('该账号已存在')
                    break
            else:
                password1 = input('请输入密码:')
                password2 = input('请再次确认密码:')
                if password1 != password2:
                    print('注册失败,两次输入的密码不一致')
                else:
                    users.append({'user': username, 'password': password2})
                    print('注册成功!')
                    break

            # 程序运行结束后,将所有用户的数据写入文件
            with open('users.txt', 'w', encoding='utf8') as f:
                # 将列表转换为字符串
                content = str(users)
                # 写入文件
                f.write(content)


work2()
# 第三题

import random

print('----石头剪刀布游戏开始----')
print('请按下面提示出拳:')
# 创建一个列表来存储石头、剪刀、布
li = ['石头', '剪刀', '布']

while True:
    print('石头【1】 剪刀【2】 布【3】 游戏结束【4】')
    # 用户输入数字
    try:
        user_num = int(input('请输入您的选项:'))
    except ValueError:
        print('您出拳有误,请按规矩出拳:')
    else:
        # 电脑随即产生数字
        r_num = random.randint(1, 3)
    if 1 <= user_num <= 3:
        # 判断用户胜利的情况
        if (r_num - user_num) == 1 or (r_num - user_num) == -1:
            print('您的出拳为{},电脑出拳头为{},您胜利了!'.format(li[user_num - 1], li[r_num - 1]))
        # 判断平局
        elif r_num == user_num:
            print('您的出拳为{},电脑出拳头为{},平局!'.format(li[user_num - 1], li[r_num - 1]))
        # 电脑胜利
        else:
            print('您的出拳为{},电脑出拳头为{},电脑胜利了!'.format(li[user_num - 1], li[r_num - 1]))
    # 用户输入4,游戏结束
    elif user_num == 4:
        print('游戏结束!')
        break
    else:
        print('您的出拳有误,请按规矩出拳!')

猜你喜欢

转载自blog.csdn.net/weixin_43264177/article/details/102763694