要求:
1A2B 猜数游 戏 1. 游 戏规则 1. 随机 生成一个四位数 ( 首位可以是 0 ,每 位的数字 不相同 ), 以下称 答 案 2. 用 户给 出一个猜 测 的四位数 3. 当用 户 猜 测 的数字 ( 四位 ) 存在于 答案 , 但 位置不正 确 时,则记为 A 4. 当用 户 猜 测 的数字 ( 四位 ) 存在于 答案 , 且 位置正 确 时,则记为 B 5. 程序返回 A 的 记 数和 B 的 记 数 , 格式 为: XAXB 2. 示例 3. 需求 对 于用 户 的非法 输 入有一定抗性 (检查 位数 , 是否都是数字 , 是否包含空 格 ) 当用 户输 入 save 时, 保存当前游 戏 状 态( 在本地生成 记录 文件 , 推荐 json 格式 ), 用 户 可 选择 退出游 戏 或 继续 游 戏 当用 户输 入 exit 时, 退出游 戏 每 局游 戏开 始 时,检查 本地是否有保存的游 戏, 如果有 , 用 户 可 选择继续 游 戏 或 开 始新游 戏 代码:# -*- codeing = utf-8 -*- # @Time : 2022/1/16 11:35 # @Author : B20041409 # @File : 1A2BFUB.py # @Software : PyCharm import random import os if os.path.exists("D:\\new.txt")==False: #检测文件是否存在 file = open('D:\\' + 'new' + '.txt','w') #若不存在则立即创建 file.close() temp=1 #控制是否继续 for i in range(1000): a = int(random.randint(1000, 9999)) aa = [int(a / 1000), int((a / 100) % 10), int((a / 10) % 10), int(a % 10)] if any([aa[0] == aa[1], aa[0] == aa[2], aa[0] == aa[3], aa[1] == aa[2], aa[1] == aa[3], aa[2] == aa[3]]): pass else: break print("已随机生成一个各位不相同的4位数字") while temp ==1 : file = open('D:\甘露\python\pythonProject1\ new.txt', 'w') b = input("请输入一个各位不相同的4位数字,来猜猜这个数:") if b.isdigit(): b = int(b) if b<9999 and b>999: bb = [int(b / 1000), int((b / 100) % 10), int((b / 10) % 10), int(b % 10)] (i, j) = (0, 0) for y in range(0, 4): if aa[y] == bb[y]: i += 1 else: if any([aa[y] == bb[0], aa[y] == bb[1], aa[y] == bb[2], aa[y] == bb[3]]): j += 1 print("%dA%dB" % (i, j)) file.write("'b'的结果是 'iAjB'") string=input("继续请输入y:") file.close() if string !="y": temp=0 continue
这个代码,输入一些数据,会判断是否符合要求,如果不符合要求就会让你重新输入,每次后都会有一个是否继续,写入y就可以进行,写入其他的字符就会退出但是有一个问题不知道怎么解决,就是保存数据的时候,老是在保存一个'b'的结果是 'iAjB'的字符