鸡兔问题
head=int(input("鸡兔数量共有:"))foot=int(input("鸡和兔的脚共有:"))
chicken=0
rabbit=head-chicken
for chicken in range(head):
if foot==chicken*2+rabbit*4:
print("chicken have:%d" % chicken)
print("rabbit have:%d" % rabbit)
else:
print("not match")
break
为什么算不出的?哪里错了? 代码的逻辑错了,你这个只比较一次,比较不成功直接输出失败退出
head=int(input("鸡兔数量共有:"))
foot=int(input("鸡和兔的脚共有:"))
for chicken in range(head):
rabbit=head-chicken
if foot==chicken*2+rabbit*4:
print("chicken have:%d" % chicken)
print("rabbit have:%d" % rabbit)
break
else:
print("not match") orino 发表于 2018-1-22 15:57
代码的逻辑错了,你这个只比较一次,比较不成功直接输出失败退出
为什么第10行的else要写在外面?这个else不是应该跟上面的if同级吗? 请参考:
hen_rabbit_cnt=int(input("鸡兔数量共计:"))
foot=int(input("鸡兔的脚数有:"))
hen=0
for hen in range(hen_rabbit_cnt):
rabbit=hen_rabbit_cnt - hen #兔子的数量是循环开始后才开始的,而不是在循环前就定义好,如果那样兔子的数量就永远是定义鸡兔的总数
if foot==hen*2 + rabbit*4:
print("hen have:%d"%hen )
print("rabbit have:%d"% rabbit)
break
else:
print("not match")
本帖最后由 orino 于 2018-1-22 17:58 编辑
checkily 发表于 2018-1-22 16:45
为什么第10行的else要写在外面?这个else不是应该跟上面的if同级吗?
那个是for语句的else特殊用法,执行完for语句之后才会执行else语句,如果中途break就不会执行else。
你原来的逻辑是,每次如果计算对不对,都会输出一个不匹配,而且兔子数量还不会增加。改成这个之后,会增加兔子数量,并且只有全部计算完之后才会输出不匹配,如果中间有计算成功就会直接break不会执行else输出不匹配 print('''鸡兔同笼问题:鸡兔一共有35头,脚有94只,问鸡兔各有几只?''')
for chickens in range(1,36):
for rabbits in range(1,36):
if 2*chickens+4*rabbits==94 and chickens + rabbits == 35:
print('鸡的数量是{},兔子的数量是{}'.format(chickens,rabbits)) 像番茄加两个蛋 发表于 2018-1-22 21:37
谢谢 orino 发表于 2018-1-22 17:57
那个是for语句的else特殊用法,执行完for语句之后才会执行else语句,如果中途break就不会执行else。
...
明白了,用来else还可以跟for搭配使用。
页:
[1]