我正在检查参数的长度,如果它等于特定值,则应输入 if
。如果不是,它应该进入else
。
print(len(sys.argv))
if (
(len(sys.argv) == 9)
& (sys.argv[8] == "framework")
):
employeeId = userid + "frame"
print("frame")
else:
employeeId = userid
print("userid")
现在传递的 len(sys.argv)
是 7 并且应该打印“userid”,但我收到了错误
列表索引超出范围
答案 0 :(得分:1)
Python 中的逻辑“与”运算符是 and
,而不是 &
。
&
是一个按位运算符,对于布尔值的工作方式可能类似,但与 and
相比,即使第一个参数为假,它也始终计算两个参数。
因此,如果 len(sys.argv)
为 7,则 sys.argv[8]
超出范围。
对于 and
,sys.argv[8]
不会被评估,因为您正确设置的条件 len(argv) == 9
是错误的。 and
运算符的此属性称为“短路”。
答案 1 :(得分:-1)
看看这个:
(len(sys.args) == 9)
& (sys.argv[8] == "framework")
您使用的是 &
,它是按位运算符,而不是条件 and
结果如下:
1 & sys.argv[8] == "framework"
因为第一个 ==
有效,并且 if 无法确定它是否为真,它会不断检查并运行 sys.argv[8]
,在您的情况下将无效
您要搜索的是 and
为:
len(sys.args) == 9 and sys.argv[8] == "framework"