目录
1.问题描述
百鸡问题:100块钱买100只鸡,公鸡5元一只,母鸡3一只,小鸡1块钱3只,怎么样的买法可以100块买100只鸡。
2.算法
x+y+z=100 #公鸡+母鸡+小鸡=100
5x+3y+1/3z=100 #总钱数
3.数据文档输入
df = pd.read_csv("chook.csv")
df = pd.read_excel("chook.xlsx") #获得文档中指定的买鸡总钱数
AllMoney = df.loc[0].money #获得文档中指定的买鸡总数量
AllNumber = df.loc[0].chooknumber
4.易错点
1) 注意小鸡是3的倍数且不能为小数。
2) 鸡不能为负数且不能为小数。
3) 测试文档数据中有错误数据,需要代码对错误数据进行提示 。
import pandas as pd
def Chicken_Best():
#从文档中读取数据
#df = pd.read_csv("chook.csv")
df = pd.read_excel("chook.xlsx")
#获得文档中指定的买鸡总钱数
AllMoney = df.loc[0].money
#获得文档中指定的买鸡总数量
AllNumber = df.loc[0].chooknumber
#显示文档信息
print(df)
for rooster in range(15): # 如果全买公鸡,最多只能买20只,公鸡不大于15,7x=4y=100,x为整数,x为7的倍数,得出x<15
#hen = 25 - 1.75 * rooster # 上面两个式子消去一未知数
#t通用公式
hen =( 3*AllMoney - AllNumber - 14*rooster)/8
chick = AllMoney - rooster - hen # 小鸡=AllNumber-公鸡-母鸡
if ((chick == (3*AllMoney - 15 * rooster - 9 * hen)) and (chick % 3 == 0) and (chick > 0) and (
hen > 0)): # 鸡>0,小鸡是3的倍数,因为不能为小数
print('公鸡有:{},母鸡有:{},小鸡有:{}'.format(rooster, hen, chick))#格式化输出
else:
print("输入的条件无法输出结果!")
Chicken_Best() # 方法调用