python百钱买百鸡问题算法_好玩的Python:植树问题,平闰年,鸡兔同笼,百钱白鸡,属相问题...

Python用来解决日常生活中的小问题很容的。

# 植树问题

total = 1

age = 1

while total <= 100:

age += 1

total += age

print("小明{}岁的时候树超过100棵".format(age))

image.png

# 有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

# 穷举法

# 列表推导式如果不理解,代码不容易懂

# list = [(chicken, rabbit) for chicken in range(0,35) for rabbit in range(35) if (2 * chicken + 4 * rabbit) == 94 and (chicken + rabbit) == 35]

for chicken in range(35):

for rabbit in range(35):

if (2 * chicken + 4 * rabbit) == 94 and (chicken + rabbit) == 35:

print("一共有{}只鸡,{}只兔子".format(chicken, rabbit))

image.png

# 闰年是公历中的名词。

# 普通年能整除4且不能整除100的为闰年。(如2004年就是闰年,1900年不是闰年);

# 世纪年能整除400的是闰年。(如2000年是闰年,1900年不是闰年);

# 对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年。

# 如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除)。

while True:

# 循环判断

year = input("请输入年份:")

# input得到的是字符串

# 需要用int方法转换为整数

year = int(year)

if (year % 4 ==0 and year % 100 != 0) or (year % 400 == 0):

# 括号不是必须的但是有利于理解代码

print("{}年是闰年".format(year))

else:

print("{}年是平年".format(year))

image.png

# 判断属相

# 小时候大人教我用手算属相

# 那时候可是聪明的象征呢

zodiac = ["子鼠", "丑牛", "寅虎", "卯兔", "辰龙", "巳蛇", "午马", "未羊", "申猴", "酉鸡", "徐狗", "亥猪"]

# 讲解获取证书值输入的办法

age_str = input("请输入你的年龄:")

your_age = int(age_str)

print("您今年{}岁,您的属相是{}".format(your_age, zodiac[10 - your_age % 12]))

# 属相要考虑周岁和虚岁的问题,然后这个算法年龄扣掉整数的12岁之后,然后计算的

image.png

这是一个让人忧伤的结果

# 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。

# 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

# 采用最暴力的枚举法

# 没有做任何优化

# 可以根据数学知识对程序进行优化

# 亲爱的老师们考虑下怎么优化

# 判断也可以改成嵌套

# 判断的层数可以减少

for chicken_papa in range(100):

for chicken_mama in range(100):

for chicken_kids in range(100):

if (chicken_papa * 5 + chicken_mama * 3 + chicken_kids / 3) == 100 and (chicken_papa + chicken_mama + chicken_kids == 100):

#讲解的时候注意条件表达式的括号

print("百钱买百鸡,问鸡翁{}鸡母{}鸡雏{}".format(chicken_papa, chicken_mama, chicken_kids))

image.png

# 九九乘法表

# range函数具体用法

# http://www.runoob.com/python/python-func-range.html

for x in range(1, 10):

for y in range(1, x + 1):

print("{} x {} = {}".format(x, y, x * y))

for x in range(1, 10):

str = ""

for y in range(1, x + 1):

str += "{} x {} = {} ".format(x, y, x * y)

print(str)

image.png

岁月空长,徒增惆怅啊。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值