- 帖子
- 31
- 精华
- 0
- 积分
- 111
- 阅读权限
- 20
- 注册时间
- 2021-2-8
- 最后登录
- 2021-4-13
|
写得挺顺的,30分钟把主体写完了。但是修改和完善内容用了一个半小时。
老师能看看吗?
其实也有几个问题。
虽然输入4个数字,能排除其中一个是浮点数的问题,比如1.5234;但是如果刚好有四个字符,比如1.52就不行了。
虽然写的是“按回车继续”,但是实际上输入除‘quit’外的任何东西都能继续,如果用户不小心输了别的,就会发现程序的漏洞。
请老师指点一下,谢谢啦!- import random
- print('你的面前有一个密码锁,密码为0~9中不重复的四个数字.')
- print('猜对正确位置上的数字为A,猜到数字但位置不正确为B.')
- print('每次结束后显示答案中A和B的个数.')
- print('比如:密码是1234.输入2345,将会显示0A3B;猜4231,将会显示2A2B.\n\n')
- password_l = random.sample(range(0,10),4)
- # 在测试各种功能的时候我“无耻地”加了右边这句 print(password_l)
- password_str = ''.join([str(i) for i in password_l])
- while True:
- en_word = [1,2,3] # 创建en_word并使其满足条件以进入while
- while len(set(en_word)) != 4: # 排除数字过多或过少或重复,和浮点数的情况
- input_w = '请直接输入4个数字(0~9)作为解锁密码:\n'
- input_w += '(注意!形式类似于1234,且为不重复的整数!)\n'
- en_word = list(input(input_w))
- answer_d = {'A':0,'B':0}
- for index in range(0,4):
- if int(en_word[index]) == password_l[index]:
- answer_d['A'] += 1
- elif int(en_word[index]) in password_l:
- answer_d['B'] += 1
- result = '%dA%dB'%(answer_d['A'],answer_d['B'])
- print(result)
- if result == '4A0B':
- break
- elif result != '4A0B':
- print('密码不对哟!\n')
- tuichu = input('要再来吗?请按回车.如果要结束游戏就请输入"quit"\n') # 防止玩家耐心渐消
- if tuichu == 'quit':
- print('游戏结束,下次再见哦!(悄悄告诉你,其实密码是%s)' % password_str)
- break
复制代码 |
|