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,'。')