python - 如何将零分配给函数中的缺失变量
问题描述
首先,感谢您阅读它。我是 Python 新手,每天都在学习新东西。我写了一个函数,其中输入是 4 个变量,输出是 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
或者也许使用一个函数
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
变量。
推荐阅读
- java - 如何使用新 Map 更新 Java HashMap
- python - Flask - wtforms:使用“FileRequired()”验证器验证失败,即使没有 form.errors
- recursion - 设计一种算法,使负载最重的服务器上的负载最小化
- sql - 根据车辆状态统计车辆运行天数
- android - 使用 Gradle 7.2 发布的 Maven api
- google-cloud-platform - gcp 为节点池中的节点分配外部 IP 地址
- python - 将颜色以 0.5*10^n 间隔放置在具有 seaborn 热图的对数定性颜色条中
- javascript - Vue 3 + Vee Validate 文件输入验证
- react-native - @react-native-community/datetimepicker 显示:单击同一日期时内联关闭
- angular - 泳道/ngx-datatable:如何检测点击的行是否展开?