python - 我一直收到 "NoneType object is not iterable"我不知道为什么。我已经检查了我的程序一千次。有谁知道如何解决这一问题?

标签 python

我被分配了一个为字节加法器编写程序的任务。第一个程序只是检查输入的数字是否有效,并导入另外两个模块:logicGates 和 fullAdder。 logicGates 没有错误,我确信它由门(if、else)组成,仅此而已。这是我的代码:

    dec1=int(input("Enter first decimal number: "))
    dec2=int(input("Enter second decimal number: "))

    def check(dec1,dec2):

        if (dec1+dec2)>255:
            print ("The decimal number you've entered is invalid. Please enter another number")
            dec1=int(input("Enter first number again: "))
            dec2=int(input("Enter second number again: "))
            return dec1,dec2

        elif (dec1+dec2)>+127 and (dec1+dec2)<-127:
            print ("The decimal number you've entered is invalid. Please enter your numbers again")
            dec1=int(input("Enter first number again: "))
            dec2=int(input("Enter second number again: "))
            return dec1,dec2

        else:
            print("Your number is now converted")
            return dec1,dec2

            print (check(dec1,dec2))

            import conversion
            lis1, lis2=conversion.bin2dec(dec1,dec2)

            import fullAdder
            add= fullAdder.fulladder(lis1,lis2)

            print (add)

这是我的 fullAdder:

    import logicGates

    def fulladder(bin1,bin2):
        lis1=list(bin1)
        lis2=list(bin2)
        Cin=0
        lisEmp=[]

        for i in range(7,-1,-1):
            num1=int(lis1[i])
            num2=int(lis2[i])
            result1=logicGates.XOR(num1,num2)
            result2=logicGates.NAND(result1,Cin)
            result3=logicGates.OR(result1,Cin)
            Sum=logicGates.AND(result2,result3)
            result4=logicGates.AND(num1,num2)
            result5=logicGates.AND(result1,Cin)
            result6=logicGates.NOR(result4,result5)
            result7=logicGates.NOT(result6)

            Cin=result7
            lisEmp.insert(0,Sum)

        return lisEmp

这是我的 bin2dec 代码:

    def bin2dec(dec1,dec2):

        a=bin(dec1)
        b=bin(dec2)

        c=a[2:]
        d=b[2:]

        bin1=c.zfill(8)
        bin2=d.zfill(8)

        print (bin1)
        print (bin2)

这是我不断收到的错误。

    Traceback (most recent call last):
      File "C:\Python34\main.py", line 26, in <module>
        lis1, lis2=conversion.bin2dec(dec1,dec2)
    TypeError: 'NoneType' object is not iterable

最佳答案

TLDR

问题是您的函数 bin2dec 没有 return 语句。您可以通过添加来修复它

return bin1, bin2

bin2dec的末尾。

错误的深入解释

实际发生的情况以及为什么你会得到“NoneType object is not iterable”,是因为 python 实际上从函数中获得多个返回值,即使它看起来像这样。相反,发生的情况是返回一个元组,然后解压该元组。

因此,您的代码中发生的情况与此相同

result = conversion.bin2dec(dec1, dec2)
lis1, lis2 = result

在这里,由于缺少 return 语句,我们得到 resultNone,然后在下一行中 lis1, lis2 = result执行 code> 时,您尝试解压 None 值,这是不可能的,因此会抛出 TypeError

关于python - 我一直收到 "NoneType object is not iterable"我不知道为什么。我已经检查了我的程序一千次。有谁知道如何解决这一问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45120931/

相关文章:

python - Python 中的 3D 图

python - PyTorch 模块如何做 back prop

python - 神经网络损失函数和权重矩阵不匹配

python - Pandas:使用多个字符串条件过滤行

python - 使模型字段等于 Django 中两个字段的串联

python - 我是否必须再次预处理新数据才能预测模型?

python - Django 模型的类型注释

python - 自动将 CSV 导入 Outlook 日历

python - 用于大型多光谱图像的 Numpy 计算 corrcoef

python - 如何使用 Flask test_client 设置请求参数?