Python小游戏之“读心术”

 读心术:猜数字游戏 〉 一款经典的猜数字AI:用户先随机在 0-1000之间随意写一个数字,AI开 始猜,如果猜的数大了,用户就说大 了,反之,则说小了。

算法:二分查找

〉 从中间的数开始,如果猜中则结束

〉 如结果大于或者小于中间的数,则在 剩下大于或小于中间的数的那一半中 查找

〉 每一次比较都使搜索范围缩小一半

 

import random

import sys

def human_guess():
    #从0-1000中,产生一个随机数
    num = random.randint(0,1000)
    i = 0
    while 1 :
        #异常处理-输入非int型数据的时候
        try:
            #guess接收-从键盘输入数字的值
            guess = int(input('‘请输入数字0~1000:'))
        except ValueError:
            print("请输入正确的数字0~1000")
            continue
        i += 1
        #如果输入猜测的数字,比随机产生的数num要大
        if guess > num :
            #提示猜测大了
            print("猜大了:",guess)

        elif guess < num :
            #提示猜小了
            print("猜小了:",guess)

        else:
            print("你猜对了!共猜了",i,"次")
            sys.exit(0)

def computer_guess():
    print('请在心里想一个0~1000范围内的数字')
    small = 0
    big = 1000
    guess = 500
    i = 0
    while 1:
        guess = int((big+small)/2)
        i += 1
        print('是这个数吗:'+ str(guess) + 'B:大了,S:小了,C:正确')
        char = input()
        if char == 'B':
            big = guess
        elif char == 'S':
            small = guess
        elif char == 'C':
            print("共猜了{0}次,得到正确结果{1}".format(i,guess))
            sys.exit(0)
        else:
            print('请正确输入回答:(B:大了,S:小了,C:正确)')
def main():
    who_guess = input('请决定谁来猜数(C:电脑,H:玩家):')
    if who_guess in 'Hh':
        human_guess()
    elif who_guess in 'Cc':
        computer_guess()

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('程序异常')
        sys.exit(1)

 

 

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值