Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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
通过Python函数运行多个输入_Python - Fatal编程技术网

通过Python函数运行多个输入

通过Python函数运行多个输入,python,Python,我正在通过一个函数运行多个浮点以生成一个科学符号。然而,并不是所有的浮动都在任何时候都被放入(它是随机的),因此产生了一个错误 输入: a0,hvt,at,lambd = signify(a0,hvt,at,lambd) 功能: def signify(*args): rst = [] for arg in args: if arg >= 100.0 or arg <= 0.01: arg = '{:.2e}'.format

我正在通过一个函数运行多个浮点以生成一个科学符号。然而,并不是所有的浮动都在任何时候都被放入(它是随机的),因此产生了一个错误

输入:

a0,hvt,at,lambd = signify(a0,hvt,at,lambd)
功能:

def signify(*args):
    rst = []

    for arg in args:
        if arg >= 100.0 or arg <= 0.01:
            arg = '{:.2e}'.format(arg)
            rst.append(arg)
    return rst
def表示(*args):
rst=[]
对于args中的arg:

如果arg>=100.0或arg我认为您不太了解错误是什么。你能发布错误消息吗

我怀疑您试图分配
a0,hvt,at,lambd=signify(a0,hvt,at,lambd)
才是真正的罪魁祸首,如果从函数返回的“rst”没有4个元素呢?左侧的语法强制将右侧的列表解包为4个元素,并引发
ValueError:在不匹配的情况下解包的值太多(预期为4)

尝试
result=表示(a0、hvt、at、lambd)
并检查输出

更新:

如果您只想修改4个术语中的一部分,但允许其余术语按原样通过,那么您只需要一个else部分。以下是您如何看待整个过程

def signify(*args):
    rst = []
    print(args)
    for arg in args:
        if arg >= 100.0 or arg <= 0.01:
            arg = '{:.2e}'.format(arg) #returns a string
            rst.append(arg)
        else:
            rst.append(arg) #take note that this else statement is the same as the last statement of if block
            #also note that args going through else block are not "strings" unlike the if block, which gives a string during ".format()"
    return rst
def表示(*args):
rst=[]
打印(args)
对于args中的arg:

如果arg>=100.0或arg=100.0或arg=100或single_arg=100或x,请添加示例输入、输出和错误。一般来说,你可以使用虚拟变量,或者你坚持要接收整个4,或者只是返回一个dict。它的变量与你的usecase是正确的,rst并不总是由4个元素组成。(将在帖子中添加此内容)但由于我的经验有限,我很难找到正确的解决方案(如果不使用if语句:),好的。你的目标是什么?您希望所有4个术语始终保持不变,但如果它们符合条件,则会对其中一些术语进行修改?那么您只是缺少了一个按原样传递术语的
else
语句。@Sumerechny Updated,这就是您要找的吗?太棒了!谢谢,特别是你的补充解释。
def signify(*args):
    rst = []
    print(args)
    for arg in args:
        if arg >= 100.0 or arg <= 0.01:
            arg = '{:.2e}'.format(arg)
        rst.append(arg) #note that you may want to typecast to string to maintain uniformity.
        #rst.append(str(arg))
    return rst
def signify_single(single_arg):
    if single_arg >= 100 or single_arg <= 0.01:
        return '{:.2e}'.format(single_arg)
    return single_arg #or str(single_arg)
a,b,c,d = (signify_single(x) for x in (101,202,303,40))
a,b,c,d = ('{:.2e}'.format(x)
          if (x >= 100 or x <= 0.01)
          else x #or str (x)
          for x in (101,202,303,40))
a,b,c,d = (x if (0.01 < x < 100) else '{:.2e}'.format(x) for x in (101,202,303,40))
a0,hvt,at,lambd = (x if (0.01 < x < 100) else '{:.2e}'.format(x) for x in (a0,hvt,at,lambd))