猜数字游戏Bulls and Cows的解法

本文介绍了猜数字游戏Bulls and Cows的规则和两种玩法:电脑出题玩家猜和玩家出题电脑猜。通过Python实现,电脑出题时,玩家有10次机会猜四位无重复数字,电脑根据猜的数字返回A和B的个数;电脑猜题时,通过排除法逐步缩小正确答案范围。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。查了网上很多关于这个游戏的帖子,大多都是计算机出题,人来猜。根据百度百科的介绍,有非常多种方法可以实现七步之内猜出答案。下面我就介绍其中最简单的一种也是我唯一会的一种方法。


一、游戏规则

首先需要说明游戏规则,因为这个游戏网上还有很多变种。就像麻将一样,玩的人多了,就玩出花来了。

  1. 出题人写一个四位数的密码,每一位数都可以从0到9选一个,但四位数字不能有重复的。如4415这个密码就是不行的。0可以放到开头,如0123这样也是可以的。当然这个密码不能给猜题人看到,这是答案,猜题人要猜的。
  2. 猜题人写一个自己猜测的密码,格式同上。写完后展示给出题人观看。
  3. 出题人根据猜题人的数字回答几A几B,其中A的个数表示猜题人猜测的数字位置正确的数的个数,B表示数字正确而位置不对的数的个数。例如出题人写下的密码是1564,猜题人写下的是7514,这时出题人就要告诉猜题人2A1B。
  4. 猜题人根据出题人提供的提示继续猜一个密码,出题人后续也要给出相应提示。
  5. 直到猜题人猜中出题人写下的数字,游戏结束。统计一下猜题人猜了多少次,猜的次数越少越厉害。

规则到此结束,建议刚接触这个游戏的人去体验一下,游玩链接点这里。毕竟玩才是学习的最佳方式。

二、电脑出题你来猜

1.引入库

代码如下:

import random

2.生成随机四位数密码

代码如下:

li = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(li)
secret = li[:4]

3.接收玩家猜测数字

代码如下:

guess = []#接收列表
while True:#确保玩家输入的数字格式正确
    test = input('输入猜测的四位数:\n')
    if str.isdigit(test) == 1 and len(test) == 4:
        for i in test:
            guess.append(i)
        break
    else:
        print('输入的格式不正确,请重新输入')  

str.isdigit(test) == 1来判断输入的是否为数字,len(test) == 4来判断是否为4位数。

4.生成A和B的个数

代码如下:

A = 0
B = 0
for a,b in enumerate(guess):
    if secret[a] == int(b):
        A += 1
    elif int(b) in secret:
        B += 1
    else:
        pass
print(f'{
     A}A{
     B}B')
if A == 4 and B == 0:
    print('猜对了')

5.全部代码

代码如下:

li = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(li)
secret = li[:4]
for item in range(0,10):
    guess = []
    while True:
        test = input('输入猜测的四位数:\n')
        if str.isdigit(test) == 1 and len(test) == 4:
            for i in test:
                guess.append(i)
            break
        else:
            print('输入的格式不正确,请重新输入')           
    A = 0
    B = 0
    for a,b in enumerate(guess):
        if secret[a] == int(b):
            A += 1
        elif int
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值