hveagle 发表于 2022-12-24 17:49:58

电脑猜数字V14.0

本帖最后由 hveagle 于 2022-12-25 19:48 编辑

名称:电脑猜数字
版本:14.0
import time, random
print('电脑猜数字V14.0')
small = int(input('请输入范围较小的数:'))
big = int(input('请输入范围较大的数:'))
answer = int(input('请输入正确答案:'))
isright = 0
while isright == 0:
    time.sleep(1)
    guess = random.randint(small, big)
    print(f'嗯……, {guess}, 一定是正确的')
    time.sleep(1)
    if guess == answer:
      print('哇!还真对了!')
      isright = 1
    elif guess < answer:
      print('什么!小了!')
    elif guess > answer:
      print('什么!大了!')
演示(电脑猜了119次了,猜了3次89,就是猜不到88)
电脑猜数字V14.0
请输入范围较小的数:0
请输入范围较大的数:100
请输入正确答案:88
嗯……, 2, 一定是正确的
什么!小了!
嗯……, 41, 一定是正确的
什么!小了!
嗯……, 13, 一定是正确的
什么!小了!
嗯……, 90, 一定是正确的
什么!大了!
嗯……, 7, 一定是正确的
什么!小了!
嗯……, 44, 一定是正确的
什么!小了!
嗯……, 86, 一定是正确的
什么!小了!
嗯……, 9, 一定是正确的
什么!小了!
嗯……, 42, 一定是正确的
什么!小了!
嗯……, 99, 一定是正确的
什么!大了!
嗯……, 67, 一定是正确的
什么!小了!
嗯……, 79, 一定是正确的
什么!小了!
嗯……, 38, 一定是正确的
什么!小了!
嗯……, 38, 一定是正确的
什么!小了!
嗯……, 83, 一定是正确的
什么!小了!
嗯……, 97, 一定是正确的
什么!大了!
嗯……, 53, 一定是正确的
什么!小了!
嗯……, 57, 一定是正确的
什么!小了!
嗯……, 31, 一定是正确的
什么!小了!
嗯……, 48, 一定是正确的
什么!小了!
嗯……, 22, 一定是正确的
什么!小了!
嗯……, 26, 一定是正确的
什么!小了!
嗯……, 76, 一定是正确的
什么!小了!
嗯……, 98, 一定是正确的
什么!大了!
嗯……, 53, 一定是正确的
什么!小了!
嗯……, 58, 一定是正确的
什么!小了!
嗯……, 79, 一定是正确的
什么!小了!
嗯……, 24, 一定是正确的
什么!小了!
嗯……, 21, 一定是正确的
什么!小了!
嗯……, 89, 一定是正确的
什么!大了!
嗯……, 40, 一定是正确的
什么!小了!
嗯……, 53, 一定是正确的
什么!小了!
嗯……, 75, 一定是正确的
什么!小了!
嗯……, 9, 一定是正确的
什么!小了!
嗯……, 72, 一定是正确的
什么!小了!
嗯……, 95, 一定是正确的
什么!大了!
嗯……, 65, 一定是正确的
什么!小了!
嗯……, 87, 一定是正确的
什么!小了!
嗯……, 31, 一定是正确的
什么!小了!
嗯……, 4, 一定是正确的
什么!小了!
嗯……, 20, 一定是正确的
什么!小了!
嗯……, 47, 一定是正确的
什么!小了!
嗯……, 40, 一定是正确的
什么!小了!
嗯……, 9, 一定是正确的
什么!小了!
嗯……, 37, 一定是正确的
什么!小了!
嗯……, 36, 一定是正确的
什么!小了!
嗯……, 4, 一定是正确的
什么!小了!
嗯……, 17, 一定是正确的
什么!小了!
嗯……, 28, 一定是正确的
什么!小了!
嗯……, 32, 一定是正确的
什么!小了!
嗯……, 5, 一定是正确的
什么!小了!
嗯……, 98, 一定是正确的
什么!大了!
嗯……, 67, 一定是正确的
什么!小了!
嗯……, 55, 一定是正确的
什么!小了!
嗯……, 89, 一定是正确的
什么!大了!
嗯……, 47, 一定是正确的
什么!小了!
嗯……, 29, 一定是正确的
什么!小了!
嗯……, 67, 一定是正确的
什么!小了!
嗯……, 67, 一定是正确的
什么!小了!
嗯……, 41, 一定是正确的
什么!小了!
嗯……, 87, 一定是正确的
什么!小了!
嗯……, 26, 一定是正确的
什么!小了!
嗯……, 62, 一定是正确的
什么!小了!
嗯……, 47, 一定是正确的
什么!小了!
嗯……, 68, 一定是正确的
什么!小了!
嗯……, 34, 一定是正确的
什么!小了!
嗯……, 65, 一定是正确的
什么!小了!
嗯……, 50, 一定是正确的
什么!小了!
嗯……, 9, 一定是正确的
什么!小了!
嗯……, 8, 一定是正确的
什么!小了!
嗯……, 35, 一定是正确的
什么!小了!
嗯……, 8, 一定是正确的
什么!小了!
嗯……, 19, 一定是正确的
什么!小了!
嗯……, 39, 一定是正确的
什么!小了!
嗯……, 77, 一定是正确的
什么!小了!
嗯……, 91, 一定是正确的
什么!大了!
嗯……, 93, 一定是正确的
什么!大了!
嗯……, 7, 一定是正确的
什么!小了!
嗯……, 85, 一定是正确的
什么!小了!
嗯……, 82, 一定是正确的
什么!小了!
嗯……, 89, 一定是正确的
什么!大了!
嗯……, 8, 一定是正确的
什么!小了!
嗯……, 54, 一定是正确的
什么!小了!
嗯……, 32, 一定是正确的
什么!小了!
嗯……, 64, 一定是正确的
什么!小了!
嗯……, 34, 一定是正确的
什么!小了!
嗯……, 11, 一定是正确的
什么!小了!
嗯……, 32, 一定是正确的
什么!小了!
嗯……, 63, 一定是正确的
什么!小了!
嗯……, 15, 一定是正确的
什么!小了!
嗯……, 90, 一定是正确的
什么!大了!
嗯……, 56, 一定是正确的
什么!小了!
嗯……, 47, 一定是正确的
什么!小了!
嗯……, 10, 一定是正确的
什么!小了!
嗯……, 27, 一定是正确的
什么!小了!
嗯……, 82, 一定是正确的
什么!小了!
嗯……, 0, 一定是正确的
什么!小了!
嗯……, 99, 一定是正确的
什么!大了!
嗯……, 63, 一定是正确的
什么!小了!
嗯……, 43, 一定是正确的
什么!小了!
嗯……, 82, 一定是正确的
什么!小了!
嗯……, 9, 一定是正确的
什么!小了!
嗯……, 32, 一定是正确的
什么!小了!
嗯……, 97, 一定是正确的
什么!大了!
嗯……, 29, 一定是正确的
什么!小了!
嗯……, 26, 一定是正确的
什么!小了!
嗯……, 79, 一定是正确的
什么!小了!
嗯……, 94, 一定是正确的
什么!大了!
嗯……, 10, 一定是正确的
什么!小了!
嗯……, 97, 一定是正确的
什么!大了!
嗯……, 98, 一定是正确的
什么!大了!
嗯……, 27, 一定是正确的
什么!小了!
嗯……, 7, 一定是正确的
什么!小了!
嗯……, 33, 一定是正确的
什么!小了!
嗯……, 28, 一定是正确的
什么!小了!
嗯……, 42, 一定是正确的
什么!小了!
嗯……, 88, 一定是正确的
哇!还真对了!
V14.1优化:
1.二分
2.连接其他模块
3.感谢鱼油建议!(改进3条将升一大级)

zhangjinxuan 发表于 2022-12-24 19:32:21

本帖最后由 zhangjinxuan 于 2022-12-24 19:35 编辑

可以试试用上二分的思路~

给您说啊,二分简直无敌,0~10000000的数字顶多猜24下就好了!

您应该学过{:10_256:}

zhangjinxuan 发表于 2022-12-24 19:48:42

1.如果先猜了D数,小了,E数,又大了,会在D~E之间猜。
这个优化不好,因为这个的最坏时间复杂度还是 O(n), 最坏情况,知道吧,就用正常的二分吧:
import time, random
print('电脑猜数字V14.0')
small = int(input('请输入范围较小的数:'))
big = int(input('请输入范围较大的数:'))
answer = int(input('请输入正确答案:'))
small -= 1
big += 1
isright = 0
while isright == 0:
    guess = (small + big) // 2
    print(f'嗯……, {guess}, 一定是正确的')
    if guess == answer:
      print('哇!还真对了!')
      isright = 1
    elif guess < answer:
      small = guess
      print('什么!小了!')
    elif guess > answer:
      big = guess
      print('什么!大了!')

hveagle 发表于 2022-12-24 19:51:25

zhangjinxuan 发表于 2022-12-24 19:32
可以试试用上二分的思路~

给您说啊,二分简直无敌,0~10000000的数字顶多猜24下就好了!


学过,但是我要把电脑弄傻

zhangjinxuan 发表于 2022-12-24 19:52:55

hveagle 发表于 2022-12-24 19:51
学过,但是我要把电脑弄傻

真聪明{:10_306:}

编程追风梦 发表于 2022-12-24 20:23:22

不错,但是各位...给我加点荣誉呗,我现在的积分是1414,这怎么听着...
@高山 @zhangjinxuan @Mike_python小

编程追风梦 发表于 2022-12-24 20:38:12

哎呀!!不好意思,评错了!!
@hveagle 对不起对不起,你发一个帖子我给你加分

zhangjinxuan 发表于 2022-12-24 20:52:13

编程追风梦 发表于 2022-12-24 20:38
哎呀!!不好意思,评错了!!
@hveagle 对不起对不起,你发一个帖子我给你加分

让别的人来帮忙啊{:10_306:}

完蛋,我给高山的帖子评分也没有了{:10_266:}

编程追风梦 发表于 2022-12-24 21:03:20

zhangjinxuan 发表于 2022-12-24 20:52
让别的人来帮忙啊

完蛋,我给高山的帖子评分也没有了

哈哈哈

zhangjinxuan 发表于 2022-12-25 09:03:40

{:7_146:}
页: [1]
查看完整版本: 电脑猜数字V14.0