Python 根据另一个变量的值范围定义新变量

Python 根据另一个变量的值范围定义新变量,python,if-statement,variables,range,Python,If Statement,Variables,Range,这是一个python函数,它根据另一个变量(num\u heavy\u atoms)的值设置变量cor的值:如果num\u heavy\u atoms在范围[1:10],cor=1.0,如果num\u heavy\u atoms在范围[11:20],cor=2.0,等等 def determine_cor(num_heavy_atoms): if num_heavy_atoms >= 1 and num_heavy_atoms <= 10: cor = 1.0

这是一个python函数,它根据另一个变量(
num\u heavy\u atoms
)的值设置变量
cor
的值:如果
num\u heavy\u atoms
在范围
[1:10]
cor=1.0
,如果
num\u heavy\u atoms
在范围
[11:20]
cor=2.0
,等等

def determine_cor(num_heavy_atoms):
    if num_heavy_atoms >= 1 and num_heavy_atoms <= 10:
        cor = 1.0
    elif num_heavy_atoms >= 11 and num_heavy_atoms <= 20:
        cor = 2.0
    elif num_heavy_atoms >= 21 and num_heavy_atoms <= 30:
        cor = 3.0
    elif num_heavy_atoms >= 31 and num_heavy_atoms <= 40:
        cor = 4.0
    elif num_heavy_atoms >= 41 and num_heavy_atoms <= 50:
        cor = 5.0
    elif num_heavy_atoms > 50:
        cor = 6.0
    return cor 
def define_cor(重原子数):
如果num_heavy_atoms>=1,num_heavy_atoms=11,num_heavy_atoms=21,num_heavy_atoms=31,num_heavy_atoms=41,num_heavy_atoms=50:
cor=6.0
返回cor

是否可以以更简洁的方式重写此函数以避免所有这些
elif
,并在开始时定义变量(
num\u heavy\u atoms
)的所有可能范围?

您可以使用字典从
num\u heavy\u atoms
计算密钥:

cor_值={i:i+1表示范围(5)}
cor=cor_values.get((num_heavy_atoms-1)//10,6)
这假设
num\u heavy\u atoms>=1
,这对于您的应用程序来说似乎是合理的

或者,您可以通过以下方式直接从
num\u heavy\u atoms
计算
cor

cor=(数重原子-1)//10+1
cor=最小值(cor,6)

您可以使用以下功能

def determine_cor(num_heavy_atoms):
    heavy_atoms = [10,20,30,40,50]
    for i , val in enumerate(heavy_atoms, start=1):
        if num_heavy_atoms <= val :
            return i    
    return 6
def define_cor(重原子数):
重_原子=[10,20,30,40,50]
对于i,枚举中的val(重_原子,起始值=1):
如果有多少个重原子