python二分算法教程 (python二分法查找1到100的数)

在学习Python的时候我也阅读了一些其他类型的书籍,比如;算法。因为Python比较强的是爬虫和大数据分析,当然其他语言也都可以去做爬虫和数据分析,可能是Python更容易学作为小白的话尝试了一下 确实比较容易理解和实践~。

我们之前有玩过一个游戏 就是通过随机数让计算机出一个数,然后我们去判断计算机出的数是哪个。

计算机会从1~100中随机出一个数,我们有6次机会去计算,看看能否猜出来。

import random
def caishuzi(fanwei,caideshu):
    cishu=1
    while cishu<7:
        caideshu=int(input('请输入你猜的数:'))
        if caideshu==a:
            print(f'很厉害嘛,第{cishu}次,猜对的,')
            break
        else:
            if caideshu>a:
                print(f'猜大了,这是第{cishu}次')
            else:
                print(f'猜小了,这是第{cishu}次')
        cishu+=1

a = random.randint(1,100)
fanwei=[i for i in range(1,101)]
caishuzi(fanwei,a)

视频加载中...

运气好6次以内可以搞定,最多可能需要6-7次,当然这是咱们玩了很多次以后找到了一个好的办法 ,就是2分法,因为知道是1~100里面的数字,那么第一次最大就是100,最小是1,先取个中间值50(取整数),如果猜得大了,再从中间值到最小值去考虑,如果小了,就从中间值到最大值去考虑。

按这个思路 我们可以做一个二分法的函数出来。注意:这个方法只能用于有序的范围,如果范围是无序的就不管用了哈。

做出来后干嘛呢?用魔法打败魔法吧~计算机跟计算机去玩吧。

import random
def caishuzi(fanwei,caideshu):
    zuixiaozhi=1
    zuidazhi=len(fanwei)
    cishu=1
    while cishu<8:
        zhongjianzhi = (zuidazhi + zuixiaozhi) // 2
        print(f'计算机建议你猜:{zhongjianzhi}')
        guess=int(input('请输入你猜的数:'))
        guess=zhongjianzhi
        if guess==caideshu:
            print(f'很厉害嘛,第{cishu}次,猜对的,')
            break
        else:
            if guess>caideshu:
                zuidazhi=zhongjianzhi-1
                print(f'猜大了,这是第{cishu}次')
            else:
                zuixiaozhi=zhongjianzhi+1
                print(f'猜小了,这是第{cishu}次')
        cishu+=1

a = random.randint(1,100)
fanwei=[i for i in range(1,101)]
caishuzi(fanwei,a)

视频加载中...

让魔法打败魔法就跟找到外挂一样有趣~

二分法查找算法python,python二分法查找1到100的数