[代码]猜数字AB版
猜数字AB 1.1.1游戏规则:有四个不同的随机0到9数字,让你猜这四个数字分别是什么,顺序与随机数字序列要一样。如果数字或顺序不一样,就给出“几A几B”的结果,A所处的数字代表猜对的且位置相同的数的数量,B代表正确答案中有但位置不同的数的数量。
来自网络的游戏规则:
两个人玩,一方出数字,一方猜。出数字的人要先想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。接着猜的人再根据出题者的几A几B继续猜,直到猜中为止。
——[url]https://www.[/url]
如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。接着猜的人再根据出题者的几A几B继续猜,直到猜中为止。
——[url]https://www.[/url]
本游戏最多有十次机会!
“AB版猜数字 1.1.1”代码:
程序代码:
import random def is_chongfu(test_list): for i in range(len(test_list)): for j in range(len(test_list)-1): j1=j if j<i else j+1 if test_list[j1] == test_list[i]: return True else: return False def check(yours,answers): a,b=0,0 for i in range(len(yours)): for j in range(len(answers)): if yours[i]==answers[j]: if i==j: a+=1 else: b+=1 return (a,b) nums=random.sample(range(10),4) i=1 while i<=10: print("第 %d 次猜数字:"%i) yourAns=input("请依次输入四个数字(如5423,没有分隔符,超出的忽略):") print("你输入:",', '.join(yourAns[:4])) if yourAns == "": print("输入为空!") continue if len(yourAns)<4: print("数字不够!") continue try: yourAns2=[int(e) for e in yourAns] except ValueError: print("不是数字!") continue if is_chongfu(yourAns2): print("数字重复!") continue a,b=check(yourAns2,nums) print(f"结果: {a}A{b}B") if a==4: print("你成功了!") break i+=1 else: print("你失败了。") print("答案是:",', '.join([str(e) for e in nums]))
备注:代码不能用BCCN在线编程运行,因为输入值只能在程序运行前输入。
[此贴子已经被作者于2022-8-21 20:32编辑过]