Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中仅处理int?_Python_Integer_Equation - Fatal编程技术网

如何在Python中仅处理int?

如何在Python中仅处理int?,python,integer,equation,Python,Integer,Equation,我的代码有问题。这个任务是搜索3个整数来解这个方程6*a+9*b+20*c=x,其中x是一个输入。问题是我的代码只适用于浮点数,我无法强制它只在a、b、c是整数时给我一个anwser 以下是Python中的代码: def mc_nuggets(numWings): for Na in range(0, numWings + 1): for Nb in range(0, numWings - Na + 1): for Nc in range(0, n

我的代码有问题。这个任务是搜索3个整数来解这个方程6*a+9*b+20*c=x,其中x是一个输入。问题是我的代码只适用于浮点数,我无法强制它只在a、b、c是整数时给我一个anwser

以下是Python中的代码:

def mc_nuggets(numWings):
    for Na in range(0, numWings + 1):
        for Nb in range(0, numWings - Na + 1):
            for Nc in range(0, numWings - Na - Nb + 1):
                num_a = (numWings -  9*Nb - 20*Nc)/6
                num_b = (numWings -  6*Na - 20*Nc)/9
                num_c = (numWings -  9*Nb - 6*Nc)/20
                if (6*num_a + 9*num_b + 20*num_c == numWings and type(num_a) is int == True and type(num_b) is int == True and type(num_c) is int == True):
                    return [num_a, num_b, num_c]
return [None, None, None]             

您对如何使其工作有什么想法吗?

您使用的是python 2还是python 3?在Python2上,您的代码将截断整数,因此它是不正确的

在Python3上,不是因为值是
3.0
,所以类型是integer,而是float。要检查它是否为整数值,请使用
is_integer
方法,请参阅


这里有一个方法,说明如何在不使用float的情况下进行处理:您应该直接迭代a和b。a的较大值为
数值/6
(当b和c为0时)。然后可以迭代b直到
(numwings-6*a)/9
。一旦你到达那里,你就知道
20*c=numwings-6*a-9*b
所以你不需要第三个循环,你可以很容易地检查是否有一个整数,比如前面的等式是正确的(例如用模来检查)。

我的问题解决方案:

def mc_nuggets(numWings):
    for Na in range(0, numWings + 1):
        for Nb in range(0, numWings - Na + 1):
            for Nc in range(0, numWings - Na - Nb + 1):
                num_a = (numWings -  9*Nb - 20*Nc)
                num_b = (numWings -  6*Na - 20*Nc)
                num_c = (numWings -  9*Nb - 6*Na)
                if (num_a % 6 == 0 and num_b % 9 == 0 and num_c % 20 == 0):
                    if (num_a >= 0 and num_b >= 0 and num_c >= 0):
                        return [num_a/6, num_b/9, num_c/20]
     return [None, None, None]

缩进是不正确的,你是作为MIT 6.00x的一部分来做的吗?等式是正确的6*a+9*b+20*b还是应该是6*a+9*b+20*c@moonit那么,请记住2012年秋季版本中的这一点:“从6.00x课程工作人员那里,请不要参与此类作弊。首先,这违反了荣誉守则。其次,你们中少数人的行为给所有edX员工和学生带来了不好的印象。关于堆栈溢出,请不要寻求家庭作业帮助。使用我们的论坛,当我们的论坛关闭时,遵循荣誉代码,做你自己的工作。“我不是麻省理工学院的学生,只是为自己做这件事。也可以不使用//运算符保留在整型字段中。@greatvovan是的,但如果使用
/
运算符,您会遇到与python 2相同的问题,您的值会被截断。在这种情况下,它将只生成具有相同值的多个解决方案。我是关于迭代边界的,它们无论如何都应该是整数。@greatvovan是的,你说得对,我只是给出了如何进行练习的提示。