此检查检测到通常无法到达的代码

时间:2019-01-15 02:19:58

标签: python pycharm

我不知道为什么会这样。当我尝试返回false时,它会说明以下所有语句是否有错误

  

此检查检测到通常无法到达的代码

我正在使用pyCharm,听说这是pycharm的问题,但我无法用我自己的观点来证实其他人的问题。

code = raw_input("Enter your code: ").lower()
begmeter = int(raw_input("Enter your beginning meter: "))
endmeter = int(raw_input("Enter your ending meter: "))

def errors():

if type(begmeter and endmeter < 0):
    print("Please use an integer above 0 for beginning and end meter")
    return False
else:
    return True

if type(begmeter and endmeter != int):
    print("Please use integers for beginning and end meter")
    return False
else:
    return True


if len(begmeter) > 9:
    print("Beginning meter and end meter can have a max digit amount of 9 digits")
    return False
else:
    return True

if len(endmeter) > 9:
    print("Beginning meter and end meter can have a max digit amount of 9 digits")
    return False
else:
    return True

1 个答案:

答案 0 :(得分:2)

顶部的if语句对我来说有点难懂:

if type(begmeter and endmeter < 0):

那将永远是事实,因为您使用的是值的类型。

因此,您的IDE告诉您将始终选择同一分支,而其余代码则无法访问。

也正如其他评论者所提到的那样,您的第一条if语句是完整的,因此即使if语句不赖,您也永远不会过去,因为您返回了函数前四行中的TrueFalse

在改写errors()函数时要花点时间,使其更接近我的意图。请注意,raw_input始终返回一个字符串,并且您需要尝试将它理解为int类型:

def errors():
    try:
        begmeter_i = int(begmeter)
        endmeter_i = int(begmeter)
    except ValueError:
        print("Please use integers for beginning and end meter")
        return False

    if begmeter_i <= 0 or endmeter_i <= 0:
        print("Please use an integer above 0 for beginning and end meter")
        return False

    if len(begmeter) > 9:
        print("Beginning meter and end meter can have a max digit amount of 9 digits")
        return False

    if len(endmeter) > 9:
        print("Beginning meter and end meter can have a max digit amount of 9 digits")
        return False

    # we got all the way to the end!
    return True