""" 第一题 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("您的出拳有误,请按规矩出拳!")