猜数字游戏

这节内容,我们先玩一个游戏,给定1到100以内的数字,你每次才一个数,我只能提醒你 这个数比你猜的数大或者小,那么如何在最少的次数内猜中它。 先思考10秒钟时间......

如果按照顺序从1开始猜,很明显不是最少办法。第一次我们应该猜哪个数呢?答案肯定是50,不管这个数是 大于50还是小于50,我们都排除了一半的数据,同理我们每次都猜中间这个数,每次都能排除一半 的数据,这样的思路是最快的,这种思想方法我们成为二分法,二分法是非常好的思想, 很多地方都会用到它。

上面我们已经明白了算法(实现这个游戏的方法)。现在让我们一起来实现这个程序吧。程序内置一个待猜的数, 还有一个待输入的数,每次去跟待猜的数进行比较,并且输出提示信息,直到猜中这个数为止,所以肯定需要 一个条件循环就是while循环,跳出程序的条件就是待猜数与输入数相等。

我们新建一个程序,保存为gauss_number.py

inner_number = 57  # 指定要猜的数

while True:  # 这里我们写死循环
    gauss_number = int(input("请猜1-100的整数:"))
    if gauss_number == inner_number:
        print("你猜对了是", gauss_number)
        break
    elif gauss_number > inner_number:
        print("你猜的数太大了")
    else:
        print("你猜的数太小了")


我完了一局,正常的输入情况下,程序能够正常运行

请猜1-100的整数:50
你猜的数太小了
请猜1-100的整数:75
你猜的数太大了
请猜1-100的整数:60
你猜的数太大了
请猜1-100的整数:55
你猜的数太小了
请猜1-100的整数:57
你猜对了是 57

思考题

如果我们输入非数字或者小数,或者不再1-100范围内的数,程序会怎么样?出现这些问题 我们应该如何改正,保证程序更强壮呢?