【python基础语法】第9天作业练习题

"""
第一题
1、写出异常处理语句中try作用是什么,except,else,finally下面的代码分别在什么时候会执行?(简答题)
第二题
2、改善上节课的注册程序,打开文件的读取数据的时候,如果文件不存在会报错,请通过try-except来捕获这个错误,然后进行处理
第三题
3、优化之前作业的石头剪刀布游戏,用户输入时,如果输入非数字会引发异常,请通过异常捕获来处理这个问题。
"""
"""
# 第一题
1、try的作用:
    try可以用来检测代码是否出现异常(把有可能出现异常的代码放在try里面)
2、except下面的代码什么时候执行:
    try中的代码出现异常,被except成功的捕获之后执行,会执行except中的代码
3、else下面的代码什么时候执行:
    try中的代码没有出现异常,执行else中的代码
4、finally下面的代码什么时候执行
    不管try中的代码是否发生异常,finally中的代码都会执行
"""
import random
# 第二题
def work2():
    try:
        # 读取文件中注册用户的数据
        with open("users.txt", "r", encoding="utf8") as f:
            # 读取文件内容
            data = f.read()
            # 识别字符串中的列表
            users = eval(data)
    # 错误的类型不用记忆,将报错的类型FileNotFoundError复制上去
    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("两次输入密码不一致,请重新输入!")  # 账号和密码不一致,请重新输入
                continue
            # 账号不存在,密码不重复,则添加到账户列表中
            users.append({"user": username, "password": password2})
            # user["username"] = username
            # user["password"] = password1
            print("注册成功!")
            print(users)
            break
    # 程序结束后,将所有用户的数据写入到文件
    with open("users.txt", "w", encoding="utf8") as f:
        # 将列表转换为字符串
        content = str(users)
        # 写入文件
        f.write(content)

work2()

# 第三题
while True:
    # 用户输入数字
    try:
        user = int(input("用户输入要出的拳 :石头(1)/剪刀(2)/布(3)/退出(4)"))
    # 检测用户输入不是数字类型的数据报错的情况
    except ValueError:
        print("您的出拳有误,请按规矩出拳")
        # continue
    # 没有报错的情况
    else:
        # 电脑随机生成数字
        computer = random.randint(1,3)
        print(computer)
        if user > 0 and user < 4:
            if user - computer == -1 or user - computer == 2:
                print("用户胜!")
            elif user - computer == -2 or user - computer ==1:
                print("电脑胜!")
            else:
                print("平局!")
        elif user == 4:
            print("结束游戏!")
            break
        else:
            # 用来检测不是1-4的数字范围
            print("您的出拳有误,请按规矩出拳!")

 

posted on 2020-02-28 18:41  诚实的表达自己  阅读(290)  评论(0编辑  收藏  举报