场景:主持人给个商品,价格在99999中,你说一个价格,支持人会比对实际价格,来告诉你是高了,还是低了,如何用最少的次数猜测到商品价格。
思路:二分查找法
上代码:
# -*- coding:utf-8 -*- # 猜商品价格游戏--使用二分法最快 前提:价格在999元以内 #商品实际价格 oldPrice=0 #用户猜测的价格 caiPrice=0 #区间最低价格 -- 用于计算最佳猜测价格 zuidi=0 #区间最高价格 zuigao=99999 oldPrice=int(input("请输入商品实际价格:")) caiPrice=int(input("请输入您猜的价格:")) while oldPrice!=caiPrice: if caiPrice>oldPrice: print("高了") print("根据您的猜测价格,最佳价格策略为:") zuigao=caiPrice print((zuidi+zuigao)/2) caiPrice=int(input("请输入您猜的价格:")) elif caiPrice<oldPrice : print("低了") print("根据您的猜测价格,最佳价格策略为:") zuidi=caiPrice print((zuidi+zuigao)/2) caiPrice=int(input("请输入您猜的价格:")) if oldPrice==caiPrice: print("恭喜您猜对了")
实际运算结果:商品实际价格越高,需要的次数要多
请输入商品实际价格:800 请输入您猜的价格:500 低了 根据您的猜测价格,最佳价格策略为: 749.5 请输入您猜的价格:750 低了 根据您的猜测价格,最佳价格策略为: 874.5 请输入您猜的价格:874 高了 根据您的猜测价格,最佳价格策略为: 812.0 请输入您猜的价格:812 高了 根据您的猜测价格,最佳价格策略为: 781.0 请输入您猜的价格:781 低了 根据您的猜测价格,最佳价格策略为: 796.5 请输入您猜的价格:796 低了 根据您的猜测价格,最佳价格策略为: 804.0 请输入您猜的价格:804 高了 根据您的猜测价格,最佳价格策略为: 800.0 请输入您猜的价格:800 恭喜您猜对了