Python猜数字小游戏

#猜数字程序 
#其中und为用户输入的数字,rnd为预设的“正确答案”
#返回值为xAyB的形式
#如果数字正确且位置正确,A的值加1
#如果数字正确,位置不对,B的值加1
#其中,如果某个数字A加1,说明猜对一个数字,这个位置不再参与判断
#例如:用户输入8585,正确答案3585,后面3个数组585是对的
#则后面的3个位置不再参与对比,正确的数字应该是3,用户输入的是8,B的值加1
#结果应该是3A0B,而不是3A1B

import random

s = []
ans = []
text = []      #存储输入的多行,换行符间隔
und = '' #存储单行输入
d1 = {'A':0,'B':0}

# 下面方法用于生成长度为4的随机数
def gen_rnd():
    for i in range(0,4):
        x = random.randint(0,9)
        ans.append(str(x))
    print("正确答案(你看不见我):"+"".join(ans))
    return ans

#随机生成一个4位随机数列表,作为答案
rnd = list(gen_rnd())
print(rnd)

def guess_num(und,rnd):
    #初始化字典和列表,以便存储当前处理的值
    d1 = {'A':0,'B':0}
    s = []
    rnd2 = rnd.copy()
    und2 = und.copy()
    for i in range(0,len(und)):
        if und2[i] == rnd[i]:
            d1['A'] += 1
            rnd2[i] = None
            und2[i] = None
    
    for j in range(0,len(und2)):
        if (und2[j] is not None) and (und2[j] in rnd2):
              d1['B'] += 1    
        
    for k,v in d1.items():
        t= str(v)+k
        s.append(t)
    show_time = "".join(s)    
    return show_time

#开始猜数字
print("")
print("开始猜数字:")
while True:
    und = list(input())
    if und == '':
        break
    #print(und)
    rt = guess_num(und,rnd)
    print(rt) 
    print("下一个数字,回车退出:")
    

---------------------------------------------------------------------------------------------------

测试输出:

正确答案(你看不见我):6390
['6', '3', '9', '0']

开始猜数字:
3685
0A2B
下一个数字,回车退出:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值