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