繁体   English   中英

如何将零分配给 function 中的缺失变量

[英]How can I assign zero to missing variable in function

首先,感谢您阅读它。 我是 Python 的新手,每天都在学习新东西。 我写了一个 function ,其中输入是 4 个变量,output 是 4 个变量。 我的问题是变量在其他地方被定义,它正在调用脚本。 现在,如果用户在这种情况下只定义了 3 个变量,我会自动希望第 4 个变量获得零值。 我还包括了另一个我试图用于相同目的的代码。

volsum = vol1 + vol2 + vol3 + vol4

    if vol1n == missing:
       vol1n = 0
    else:
    vol1n=vol1/volsum

    if vol2n == missing:
       vol2n = 0
    else:
    vol2n=vol2/volsum

    if vol3n = missing:
       vol3n = 0
    else:
    vol3n=vol3/volsum

    if vol4n == missing:
       vol4n = 0
    else:
    vol4n=vol4/volsum       

或者可能使用 function

def vol(vol1,vol2,vol3,vol4):
    volsum = vol1 + vol2
    vol1n=vol1/volsum
    vol2n=vol2/volsum
    vol3n=vol3/volsum
    vol4n=vol4/volsum
    return vol1n, vol2n,vol3n,vol4n

在定义函数时尝试分配值:

def vol(vol1 = 0,vol2 = 0,vol3 = 0,vol4 = 0):
    volsum = vol1 + vol2
    vol1n = vol1 / volsum
    vol2n = vol2 / volsum
    vol3n = vol3 / volsum
    vol4n = vol4 / volsum
    return vol1n, vol2n,vol3n,vol4n

现在假设您想跳过vol2

variable_assigned = vol(vol1 = 5,vol3 = 2,vol4 = 5)

如果您需要一条线(我喜欢创建一条):

#defining vol()
def vol(*kwargs): return [i/sum(kwargs) for i in kwargs]
# using vol()
#example
vol (1,2,3)
#returns
[0.16666666666666666, 0.3333333333333333, 0.5]
# so to assign variables,
#if you give 3 values,
vol1n, vol2n, vol3n = vol(1,2,3)
# if 4,
vol1n, vol2n, vol3n, vol4n = vol(1,2,3,5)

一点乐趣(不推荐):

  • 假设你的vol1 =1, vol2 = 5 vol3 = 3...voln = 10
  • 所以让:
vol = [ 1, 5, 3, ... n values, 10]
  • 现在,如果您运行以下代码:
for j in range(len(vol)): exec(f'vol{j+1}n = [i/sum(vol) for i in vol][j]')
  • 此代码将自动创建您的vol1n, vol2n, ... volnn变量。

而不是0,它会被遗忘吗? 就个人而言,我不喜欢在不需要的时候把东西打出来。 试试*args功能。

def vol_func(*args):
    volumesum = sum(args)
    vals = []
    for i in range(len(args)):
        vals.append(args[i] / volumesum)
    return vals  

volsumlst = vol_func(2.3, 4)

您可以使用“locals”function 检查是否定义了变量。 或者,如果变量是全局定义的,那么您应该使用 'globals' function。

if 'vol1n' not in locals():
    vol1n = 0
else:
    vol1n=vol1/volsum

if 'vol2n' not in locals():
    vol2n = 0
else:
    vol2n=vol2/volsum

if 'vol3n' not in locals():
    vol3n = 0
else:
    vol3n=vol3/volsum

if 'vol4n'  not in locals():
    vol4n = 0
else:
    vol4n=vol4/volsum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM