三酷猫学python_python学习第6期

今日任务:1.完成一个用二分法查找的程序;2.学习元组,完成前面钓鱼程序的分类统计。

一、完成一个用二分法查找的程序:

二分法查找:指在一个有序集合里,对集合下标范围内通过取中位法获取对应的元素值,进行叠代查找比较,直到找到所需要的元素。如Set1[1...n],(1...n为元素集合下标顺序值)先取一个下标的中位值K1=(1+n)/2,获取Set[K1]值与查找对象M进行比较。若Set[K1]等于M,则查找成功,返回查找位置;若Set[K1]小于M,则在[K+1,n]区间里再取中位值,进行查找比较;若Set[K1]大于M,则在[1,K-1]区间里再取中位值,进行查找比较。通过不断缩小查找区间范围,可以快速获取所需要查找的值。

程序6.1代码如下:

one=[1,2,3,5,6,7,12,18]

low=0                                               #范围下界

high=len(one)-1                               #范围上界

find_value=7                                   #要寻找的值

find_ok=False           #是否找到的标志,True为找到

i=1

while low<=high:

middle=int((low+high)/2)

if find_value==one[middle]:

find_ok=True

break

elif find_value>one[middle]:

low=middle+1

elif find_value

low=middle-1

i+=1

if find_ok:

print('%d在列表下标%d处,找了%d次'%(find_value,middle,i))

else:

print('%d在列表没有,找了%d次'%(find_value,i))

程序6.1运行结果如下:程序6.1运行结果

二、元组学习

元组类似列表,与列表的主要区别有以下两点。

(1)元组不能对其元素进行变动,而列表允许。

(2)元组用小括号表示(()),而列表用中括号([])表示。

元组和列表可以相互转换。

程序6.2完成钓鱼程序的分类统计

代码如下:

fish_tuple=('鲫鱼','鲤鱼','鲢鱼','草鱼','黑鱼','乌龟')

fish_sum=[0,0,0,0,0,0,0,0,0,0,0,0]                                  #记录每种鱼的销售额和数量,双数为数量,单数为销售额,从0开始记

fish_records=['1月1日','鲫鱼',18,10.5,'1月1日','鲤鱼',8,6.2,'1月1日','鲢鱼',7,4.7,'1月2日','草鱼',2,7.2,'1月2日','鲫鱼',3,12,'1月2日','黑鱼',6,15,'1月3日','乌龟',1,71,'1月3日','鲫鱼',1,9.8]

fish_records[2]-=1                                                  #被野猫叼走了一只

#修改黑鱼的价格

i=1

fish_len=len(fish_records)

while i

if fish_records[i]=='黑鱼':

fish_records[i+2]*=1.1

i+=4

#统计每种水产品的数量和金额

i=0

while i

if fish_tuple[0]==fish_records[i+1]:

fish_sum[0]+=fish_records[i+2]

fish_sum[1]+=fish_records[i+2]*fish_records[i+3]

elif fish_tuple[1]==fish_records[i+1]:

fish_sum[2]+=fish_records[i+2]

fish_sum[3]+=fish_records[i+2]*fish_records[i+3]

elif fish_tuple[2]==fish_records[i+1]:

fish_sum[4]+=fish_records[i+2]

fish_sum[5]+=fish_records[i+2]*fish_records[i+3]

elif fish_tuple[3]==fish_records[i+1]:

fish_sum[6]+=fish_records[i+2]

fish_sum[7]+=fish_records[i+2]*fish_records[i+3]

elif fish_tuple[4]==fish_records[i+1]:

fish_sum[8]+=fish_records[i+2]

fish_sum[9]+=fish_records[i+2]*fish_records[i+3]

elif fish_tuple[5]==fish_records[i+1]:

fish_sum[10]+=fish_records[i+2]

fish_sum[11]+=fish_records[i+2]*fish_records[i+3]

i+=4

j=0

amount=0                         #销售额初始化赋值

total_nums=0                    #总数量初始化赋值

while j

if j%2==0:

total_nums+=fish_sum[j]

else:

amount+=fish_sum[j]

j+=1

#算成本,求纯利润

cost=180+20+1+amount*0.05     #求成本  三天 吃饭180 鱼饵20 工具1 交税5%

profit=amount-cost            #求纯利润

#输出

i=0

while i

print('%s总数是%d,金额是%.2f'%(fish_tuple[i],fish_sum[i*2],fish_sum[i*2+1]))

i+=1

print('-'*30)

print("三酷猫总共钓上%d条水产品\n预计销售额为%.2f元\n成本为%.2f元\n纯利润为%.2f元"%(total_nums,amount,cost,profit))

程序6.2运行的结果如下:程序6.2运行结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值