为什么我得到一个TypeError:%支持的操作数类型:'NoneType和Int

时间:2014-11-23 18:00:41

标签: python python-3.x

我已经设置了一个功能,将一个否定号码转换成一个8位二进制数字。用户输入一个数字,我必须在转换前验证它。 输入有效数字时代码效果很好,验证也正常。但是,当我尝试转换一个数字AFTER验证一个invallid数字后,我得到这个NoneType操作数错误。 任何人都可以解释我做错了什么

def testDenary(testValue):
    if testValue < int(0):
        print("Error: Negative value input. Please try again!")
        return False
    elif testValue > 255:
        print("Error: Input value too high. Please try again!")
        return False
    else:
        return True

def getDenary():
    denIn = int(input("Please enter a number between 0 and 255: "))
    if testDenary(denIn):
        return denIn
    else:
        getDenary()

def convertToBinary(denaryIn):
    x = 0
    result = []
    for number in range(8):
        bit = denaryIn % 2
        result.append(bit)
        denaryIn = denaryIn // 2
        print (type(denaryIn))
    result.reverse()
    str1 = "".join(str(x)for x in result)
    return str1

def main():
    denary = getDenary()
    answer = convertToBinary(denary)
    print ("Binary version = " + answer)
    main()

main()

1 个答案:

答案 0 :(得分:1)

您的函数getDenary()不会在else子句中返回值,因此当您的函数结束时,将返回None的默认返回值。

以下是更改代码的方法:

def getDenary():
    denIn = int(input("Please enter a number between 0 and 255: "))
    if testDenary(denIn):
        return denIn
    else:
        return getDenary() # added return

注意:您可以通过执行

将整数转换为其二进制字符串表示形式
"{0:b}".format(your_int)