python写出1A2B游戏

2022/1/16 14:33:41

本文主要是介绍python写出1A2B游戏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

要求:

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


这篇关于python写出1A2B游戏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程