鸡兔同笼(Python程序设计)

本文介绍了如何用Python编程解决经典的鸡兔同笼问题,包括使用方程求解和循环枚举的方法,同时展示了如何通过人机交互进行动态测试,并探讨了print函数的不同输出方式。
摘要由CSDN通过智能技术生成

8.编程实现鸡兔同笼问题。已知在同一个笼子里总共有h只鸡和兔,鸡和兔的总脚为f只,其中,h和f由用户输入,求鸡和兔各有多少只?要求使用两种方法:一tu是求解方程;二是利用循环进行枚举测试。

方法一:求解方程法

h = int(input("请输入总头数:"))
f = int(input("请输入总脚数(必须是偶数):"))
if (f <= 0) or (f % 2 != 0):
    f = int(input("请输入总脚数(必须是偶数):"))

j = (4*h-f)/2  #j代表鸡
t = h-j  #t代表兔

if (j <= 0) or (t <= 0):
    print("无解,请重新运行测试:")
else:
    print("鸡有{}只,兔有{}只".format(j, t))

运行结果:

方法二:利用循环进行枚举测试

h = int(input("请输入总头数:"))
f = int(input("请输入总脚数(必须是偶数):"))
if (f <= 0) or (f % 2 != 0):
    f = int(input("请输入总脚数(必须是偶数):"))

m = 0
for t in range(1, h):
    j = h-t
    if j*2+t*4 == f:
        print("鸡有{}只,兔有{}只".format(j, t))
        m = 1
        
if m == 0:
    print("无解,请重新运行测试")

运行结果:

拓展与学习:

1、鸡兔同笼——人机交互

while 1:
    h = int(input("请输入总头数:"))
    f = int(input("请输入总脚数(必须是偶数):"))
    if (f <= 0) or (f % 2 != 0):
        f = int(input("请输入总脚数(必须是偶数):"))
    j = (4 * h - f) / 2
    t = h - j
    if (j <= 0) or (t <= 0):
        print("无解,按Y新的开始")
    else:
        print("鸡有{}只,兔有{}只".format(j, t))
    while 1:
        k = str(input("你想继续吗,Y想,N退出:"))
        if 'Y' == k:
            break
        elif 'N' == k:
            exit(0)
        else:
            pass

运行结果:

2、print的几种输出方法:

官网解释

print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)
  • objects -- 复数,可以输出多个对象,需要用 , 分隔。
  • sep -- 用来间隔多个对象,默认值是一个空格。
  • end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
  • file -- 要写入的文件对象。
  • flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

eg:

print("www","runoob","com",sep=".")  # 设置输出对象中的间隔符

#输出结果:www.runoob.com

其它

name = '小师'
num = 6
 
# 输出方法一:print+format组合
print('我是{},我的幸运数字是{}。'.format(name, num+1))
 
# 输出方法二:格式化字符串f
print(f'我是{name},我的幸运数字是{num+1}。')
 
# 输出方法三:格式符%
print('我是%s,我今年%s岁。' % (name, num))
 
# 加f后,语句更加整齐,省去了加双引号及逗号得复杂情况
print('我是',name,',我的幸运数字是',num+1,'。')
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值