Python猜数字小游戏 | 您所在的位置:网站首页 › 3f585 › 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 下一个数字,回车退出: |
CopyRight 2018-2019 实验室设备网 版权所有 |