Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以缩短我的if-elif语句,在每个if条件中分配一个变量值?(Python)_Python_If Statement_Variables - Fatal编程技术网

是否可以缩短我的if-elif语句,在每个if条件中分配一个变量值?(Python)

是否可以缩短我的if-elif语句,在每个if条件中分配一个变量值?(Python),python,if-statement,variables,Python,If Statement,Variables,这是我正在使用的代码 if i < 50: test_a = os.getenv("TEST_VAR_A") elif i >= 50 and i < 100: test_a = os.getenv("TEST_VAR_B") elif i >= 100 and i < 150: test_a = os.getenv("TEST_VAR_C") elif i >= 150 an

这是我正在使用的代码

if i < 50:
    test_a = os.getenv("TEST_VAR_A")
elif i >= 50 and i < 100:
    test_a = os.getenv("TEST_VAR_B")
elif i >= 100 and i < 150:
    test_a = os.getenv("TEST_VAR_C")
elif i >= 150 and i < 200:
    test_a = os.getenv("TEST_VAR_D")
elif i >= 200 and i < 250:
    test_a = os.getenv("TEST_VAR_E")
elif i >= 250 and i < 300:
    test_a = os.getenv("TEST_VAR_F")
elif i >= 300 and i < 350:
    test_a = os.getenv("TEST_VAR_G")
elif i >= 350 and i < 400:
    test_a = os.getenv("TEST_VAR_H")
else:
    test_a = "test"
如果i<50:
test\u a=os.getenv(“test\u VAR\u a”)
如果i>=50且i<100:
test\u a=os.getenv(“test\u VAR\u B”)
如果i>=100且i<150:
test\u a=os.getenv(“test\u VAR\u C”)
如果i>=150且i<200:
test\u a=os.getenv(“test\u VAR\u D”)
如果i>=200且i<250:
test\u a=os.getenv(“test\u VAR\u E”)
如果i>=250且i<300:
test\u a=os.getenv(“test\u VAR\u F”)
如果i>=300且i<350:
test\u a=os.getenv(“test\u VAR\u G”)
如果i>=350且i<400:
test\u a=os.getenv(“test\u VAR\u H”)
其他:
test_a=“test”
可以缩短吗?说一行


谢谢

Python范围可以很好地解决这个问题。有多种方法可以在几行中实现这一点,但它们可能更糟。例如:

def get_test_var(i):#给它起个更好的名字。
尝试:
字母=['A','B','C','D','E','F','G','H'][i//50]
返回os.getenv(“测试变量+字母)
除索引器外:
返回“测试”
尽管不可否认,如果有人使用名为
“TEST\u VAR\u A”
的环境变量,我可能会勃然大怒

根据您的实际用例,我认为“手动”解决方案有点冗长,但更容易理解和更改。例如,如果您想要非等间隔(例如,125-200),那么前面的方法将完全失败

人们不应该需要测试用例或调试器来跟踪代码的功能。一目了然

def get_test_var(i):#给它起个更好的名字。
如果i在范围(0,50)内:
返回os.getenv(“测试变量”)
elif i的范围为(50100):
返回os.getenv(“测试变量B”)
范围(100150)内的elif i:
返回os.getenv(“测试变量C”)
范围内的elif i(150200):
返回os.getenv(“测试变量”)
范围内的elif i(200250):
返回os.getenv(“测试变量”)
范围内的elif i(250300):
返回os.getenv(“测试变量”)
范围内的elif i(300350):
返回os.getenv(“测试变量”)
范围内的elif i(350400):
返回os.getenv(“测试变量”)
其他:
返回“测试”

Python范围可以很好地解决这个问题。有多种方法可以在几行中实现这一点,但它们可能更糟。例如:

def get_test_var(i):#给它起个更好的名字。
尝试:
字母=['A','B','C','D','E','F','G','H'][i//50]
返回os.getenv(“测试变量+字母)
除索引器外:
返回“测试”
尽管不可否认,如果有人使用名为
“TEST\u VAR\u A”
的环境变量,我可能会勃然大怒

根据您的实际用例,我认为“手动”解决方案有点冗长,但更容易理解和更改。例如,如果您想要非等间隔(例如,125-200),那么前面的方法将完全失败

人们不应该需要测试用例或调试器来跟踪代码的功能。一目了然

def get_test_var(i):#给它起个更好的名字。
如果i在范围(0,50)内:
返回os.getenv(“测试变量”)
elif i的范围为(50100):
返回os.getenv(“测试变量B”)
范围(100150)内的elif i:
返回os.getenv(“测试变量C”)
范围内的elif i(150200):
返回os.getenv(“测试变量”)
范围内的elif i(200250):
返回os.getenv(“测试变量”)
范围内的elif i(250300):
返回os.getenv(“测试变量”)
范围内的elif i(300350):
返回os.getenv(“测试变量”)
范围内的elif i(350400):
返回os.getenv(“测试变量”)
其他:
返回“测试”

TEST\u VAR\u H不应该是“TEST\u VAR\u”吗?因此,当你添加字母时,它不是“TEST\u VAR\u HA”、“HB”等?@Alexander Deep breaths…将你的愤怒引导到美好的地方,找到你快乐的地方@HenryEcker是的,这是一个复制/粘贴错误。@Ethan当人们停止使用环境变量时,我会处于一个好的、快乐的位置:)哦,还有你的
I/50
->
I//50
不应该“TEST\u VAR\u H”是“TEST\u VAR\u”,所以当你添加字母时,它不是“TEST\u VAR\u HA”,“HB”,等等?@Alexander Deep Breats…将你的愤怒引导至善,找到你快乐的地方@HenryEcker是的,那是一个复制/粘贴错误。@Ethan当人们停止使用环境变量时,我会处于一个好的、快乐的位置:)哦,还有你的
I/50
->
I//50
我喜欢总是重新排列我的代码,这样它就可以使用
。在没有范围的语言中,它为您购买了一个类似范围的语法,读起来几乎像数学:
100
。在没有范围的语言中,它为您购买了一个类似范围的语法,读起来几乎像数学:
100