在很多年以前,玩过一款猜数字游戏,据说曾是西方课堂上教师用来训练学生反应与逻辑能力的(咱也不清楚是真是假,反正好玩就完事呗);这个猜数字游戏大致规则是:系统生成一个四位数,四个位置上的数字各不相同,由玩家进行猜测这个四位数提交给系统;如果数字正确但位置不正确为1B,如果数字正确且位置正确为1A;玩家在10次机会内争取获得系统反馈的4A0B
话不多说,上python代码:
import random
def generate_number():
digits = list(range(10))
random.shuffle(digits)
return digits[:4]
def guess_number():
target = generate_number()
for i in range(10):
guess1 = input("请输入一个四位数:")
guess = [int(d) for d in guess1]
if len(guess) != 4 or len(set(guess)) != 4:
print("输入有误,请输入一个各位不重复的四位数")
continue
a = sum([1 for j in range(4) if guess[j] == target[j]])
b = sum([1 for j in range(4) if guess[j] in target and guess[j] != target[j]])
print("第{}次输入内容:{};输入结果:{}A{}B".format(i+1, guess1, a, b))
if a == 4:
print("恭喜你猜对了!")
break
else:
print("很遗憾,你没有在10次内猜对数字,正确答案是:{}".format(''.join(map(str, target))))
guess_number()
我本地测试效果如下:
需要的同学可自行拷贝代码或打包(不会打包的可参考https://blog.csdn.net/weixin_45141782/article/details/104416583?spm=1001.2014.3001.5502)