要求:
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'的字符