求大神解答 python3的问题
本帖最后由 六道土豆 于 2016-9-18 09:47 编辑def barnYard1():
heads = int(input('Enter number of heads:'))
legs = int(input('Enter number of legs:'))
pigs, chickens, spiders = solve2(legs, heads)
if pigs == None:
print('There is no solution')
else:
print('Number of pigs:', pigs)
print('Number of chickens:', chickens)
print('Number of spiders:', spiders)
def solve2(numLegs, numHeads):
solutionFound = False
for numSpiders in range(0, numHeads + 1):
for numChicks in range(0, numHeads - numSpiders + 1):
numPigs = numHeads - numChicks - numSpiders
totLegs = 4 * numPigs + 2 * numChicks + 8 * numSpiders
if totLegs == numLegs:
print('Number of pigs: ' ,numPigs)
print('Number of chickens: ' ,numChicks)
print('Number of spiders: ' ,numSpiders)
solutionFound = True
if not solutionFound: print('There is no solution')
放在Python3中 为什么计算不了 你这代码问题出在pigs, chickens, spiders = solve2(legs, heads)
solve2(legs, heads)又没有设定返回值,所以返回结果是None,左边是3个变量,右边是一个不可遍历的None,当然会报错 776667 发表于 2016-9-18 09:42
你这代码问题出在pigs, chickens, spiders = solve2(legs, heads)
solve2(legs, heads)又没有设定返回值, ...
我运行了一下程序,答案是出来了但报错是:barnYard1()
File "E:\计算机科学cs50\MIT.py", line 358, in barnYard1
pigs, chickens, spiders = solve2(legs, heads)
TypeError: 'NoneType' object is not iterable 六道土豆 发表于 2016-9-18 09:46
我运行了一下程序,答案是出来了但报错是:barnYard1()
File "E:\计算机科学cs50\MIT.py", line 3 ...
这个报错意思是'NoneType'对象是不可迭代的,你左边是3个要赋值的变量,右边却只有1个值,因此默认你右边的值是一个可迭代的对象,但是solve2(legs, heads)返回的是None所以就这样报错了,和我上面讲的死一个意思。
你想让pigs, chickens, spiders = solve2(legs, heads)正常执行不报错,可以让solve2(legs, heads)返回一个包含3个值的列表或元组。
我看你似乎连函数返回值是咋回事都不清楚,先多看点基础吧 776667 发表于 2016-9-18 10:44
这个报错意思是'NoneType'对象是不可迭代的,你左边是3个要赋值的变量,右边却只有1个值,因此默认你右 ...
大神,我菜鸟 一个 才刚学几天 我是在学基础的 啊 谢谢 代码中有两个函数,barnYard1() 用于输入数据并调用 solve2() 函数来找到可能的解决方案。solve2() 函数使用嵌套的循环来尝试不同的动物数量组合,并检查它们是否满足给定的头和腿的总数。
修改后:
def barnYard():
heads = int(input('Enter number of heads: '))
legs = int(input('Enter number of legs: '))
solutionFound = False
for spiders in range(heads + 1):
for chickens in range(heads - spiders + 1):
pigs = heads - chickens - spiders
total_legs = 4 * pigs + 2 * chickens + 8 * spiders
if total_legs == legs:
print('Number of pigs:', pigs)
print('Number of chickens:', chickens)
print('Number of spiders:', spiders)
solutionFound = True
break# 如果找到一个解决方案,退出循环
if solutionFound:
break# 如果找到一个解决方案,退出外部循环
if not solutionFound:
print('There is no solution')
barnYard()
页:
[1]