python作业,猜数游戏

编一个程序,用户先输入一个没有重复数字的三位数,比如说478,让程序来猜,每次猜完后,用户给出反馈,有几个数字正确,几个数字正确并且在正确的位置,直到程序猜对或者超过最大尝试次数。执行出来的结果如图。求大佬教,这个程序的大体结构是怎样的,怎么让程序随机产生没有重复数字的三位数,怎么根据用户的反馈来进行下一轮猜测。高悬赏!

# python 3.6+
from random import randint, choice


MAX = 5


def rd(h=3, repeat=False):
    a = randint(1, 9)
    choices = [i for i in range(0, 10) if i!=a]
    ns = [a]
    for i in range(h-1):
        n = choice(choices)
        ns.append(n)
        choices = [i for i in choices if i!=n or repeat]
    return ''.join([str(i) for i in ns])


def main():
    answer = input('Please input a number: ')
    for i in range(MAX):
        n = rd()
        q = input(f'{i+1}. Is {n} the right number?[y/(n)] ')
        if q.strip() == 'y':
            print('Done!')
            return
    print('Guess time reach limit. Exit!')


if __name__ == '__main__':
    main()

追问

def rd() 的部分看懂了,那怎么根据用户的反馈来进行猜数的调整呢?比如对于数字154,程序猜456,用户会反馈,2个数字correct,1个数字exact,然后程序需要根据这些信息来进行下一轮猜测。好复杂。。。非常感谢!

追答answer = 456
n = input('Enter a number: ')
correct = len([i for i in n if i in str(answer)])
exact = len([a for a, b in zip(n, str(answer)) if a==b])
print(f'{correct} correct, {exact} exact.')

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网