猜秘密三位数(人、机互相猜)小游戏

题目:

猜秘密三位数(人、机互相猜)小游戏

问题描述:
你和计算机都各自选定一个秘密的三位数,然后互相猜对方的数字。用几个A表示对方猜的三位数中有几个数是完全正确的。用几个B表示对方猜的三位数中有几个数正确但是位置不对。看是计算机还是你先猜到对方的数字。
注:不考虑有重复的三位数,例如:335等。
比如:
你选定的秘密三位数:123
对方猜: 247
回答: 0 A 1 B (1B是因为2在我的秘密三位数里,但是它的位置不对。)
请猜一个三位数:123
你猜: 123
回答: 1 A 0 B (A因为2是完全正确的。)

Python代码如下:

import random
n1 = int(input('你选定的秘密三位数:'))
n2 = random.randint(100, 1000)
def f(n):
    L=[]
    L.append(n // 100)
    L.append(n % 100 // 10)
    L.append(n % 10)
    return L
L1 = f(n1)
L2 = f(n2)
def compare(S1, S2):                  #函数:比较两个不等列表的相对个数
    i = t = A = B = 0                 #function: calculate the relative number of two unequal list
    while i < len(S1):
        t = 0
        while t < len(S2):
            if S1[i] == S2[t] and i == t:
                A += 1
            elif S1[i] == S2[t] and i != t:
                B += 1
            t += 1
        i += 1
    print('回答:', A, 'A', B, 'B')
    return 0
def f1(L1):                          #函数:计算机猜 //  function: computer guess
    b = random.randint(100, 1000)
    print('对方猜:', b)
    L4 = f(b)
    if n1 == b:
        print('你回答:3 A 0 B(答对了)')
        return 0
    compare(L1, L4)
    f2(L2)
def f2(L2):                           #我猜 //  I guess
    a = int(input('请猜一个三位数:'))
    while a >= 1000 or a < 100:
        print('Datas error!')
        a = int(input('请重新猜一个三位数:'))
    print('我猜:', a)
    L3 = f(a)
    if n2 == a:
        print('对方回答:3 A 0 B(答对了)')
        return 0
    compare(L2, L3)
    f1(L1)

while n1 >= 1000 or n1 < 100:
    print('Datas error!')
    n1 = int(input('请重新选定一个秘密三位数:'))
else:
    f1(L1)                                 #开始 //  start
                               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值