鱼C论坛

 找回密码
 立即注册
查看: 5209|回复: 5

[已解决]求大神解答 python3的问题

[复制链接]
发表于 2016-9-18 09:09:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 六道土豆 于 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中 为什么计算不了
最佳答案
2023-12-4 15:40:31
代码中有两个函数,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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-18 09:42:48 | 显示全部楼层
你这代码问题出在pigs, chickens, spiders = solve2(legs, heads)
solve2(legs, heads)又没有设定返回值,所以返回结果是None,左边是3个变量,右边是一个不可遍历的None,当然会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-18 09:46:33 | 显示全部楼层
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-18 10:44:19 | 显示全部楼层
六道土豆 发表于 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个值的列表或元组。
我看你似乎连函数返回值是咋回事都不清楚,先多看点基础吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-18 13:08:15 | 显示全部楼层
776667 发表于 2016-9-18 10:44
这个报错意思是'NoneType'对象是不可迭代的,你左边是3个要赋值的变量,右边却只有1个值,因此默认你右 ...


大神  ,我菜鸟 一个   才刚学几天      我是在学基础的 啊     谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-4 15:40:31 | 显示全部楼层    本楼为最佳答案   
代码中有两个函数,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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 03:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表