我不知道为什么会这样。当我尝试返回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
答案 0 :(得分:2)
顶部的if
语句对我来说有点难懂:
if type(begmeter and endmeter < 0):
那将永远是事实,因为您使用的是值的类型。
因此,您的IDE告诉您将始终选择同一分支,而其余代码则无法访问。
也正如其他评论者所提到的那样,您的第一条if
语句是完整的,因此即使if
语句不赖,您也永远不会过去,因为您返回了函数前四行中的True
或False
。
在改写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