今天的开胃菜,让我们来模拟一个酒桌上的数字游戏——拍七:从1到100轮流报数,每逢含有7和7的倍数的人要拍一下手。
实现起来相当简单,会打字的人都会写。
for i in range(1,101):
if i%7==0 or '7' in str(i):
print('pass')
else:
print(i)
接下来,我们来模拟一次猜数字游戏,不过猜数的人不是我们,而是用折半查找的思想,看看多少次能猜对。我们知道,二分查找的最大次数是log(N),即int(log(N))+1,以N=300为例,最多为6次,。
import random
secret = random.randint(1,300)
high = 300
low=0
count=0
while 1:
guess = int((low+high)/2)
count+=1
if guess>secret:
high=guess
elif guess
low=guess
elif guess == secret:
print('这个数字是:',guess)
print('猜了几次:',count)
break
最后,稍微提高一点难度,让我们求解九宫格(众所周知,三阶幻方的解法有8个)。