Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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_Python 3.x - Fatal编程技术网

Python 根据变量值调用不同的函数

Python 根据变量值调用不同的函数,python,python-3.x,Python,Python 3.x,我总共有500个浮点数,我想在每个浮点数上运行if语句,并相应地调用一个函数 我的代码是这样的: x1 = .2 x2 = .33 x3 = -.422 x4 = -1 def function1(): print("x1 is positive") def function2(): print("x2 is positive") def function3(): print("x3 is positive") def function4(): print

我总共有500个浮点数,我想在每个浮点数上运行if语句,并相应地调用一个函数

我的代码是这样的:

x1 = .2
x2 = .33
x3 = -.422
x4 = -1

def function1():
    print("x1 is positive")

def function2():
    print("x2 is positive")

def function3():
    print("x3 is positive")

def function4():
    print("x4 is positive")

for x in range(10):    
    if x1 > 0:
        function1()

    if x2 > 0:
        function2()

    if x3 > 0:
        function3()

    if x4 > 0:
        function4()  
values = [.2, .33, -.422, -1, .1, -.76, -.36, 1, -.6, .73, .22, .5,  # ... ,
         ]
我想要一种更好更有效的方法来实现这一点,否则我必须为所有变量编写if语句

您应该学习python编码-这个问题在python中非常基本

创建一个检查变量并打印正确内容的函数:

x1 = .2
x2 = .33
x3 = -.422
x4 = -1

def check_and_print(value, variablename):
    """Checks if the content of value is smaller, bigger or euqal to zero. 
    Prints text to console using variablename."""
    if value > 0:
        print(f"{variablename} is positive")
    elif value < 0:
        print(f"{variablename} is negative")
    else:
        print(f"{variablename} is zero")

check_and_print(x1, "x1")
check_and_print(x2, "x2")
check_and_print(x3, "x3")
check_and_print(x4, "x4")
check_and_print(0, "carrot") # the given name is just printed
通过使用
元组的
列表和循环,您可以进一步缩短代码:

for value,name in [(x1, "x1"),(x2, "x2"),(x3, "x3"),(x4, "x4"),(0, "x0")]:
    check_and_print(value,name)  # outputs the same as above
Doku:


    • 如果数据不是存储在一堆单独命名的变量中,比如
      x1
      x2
      <代码>x500
,如您在注释中所示

如果列表中的值如下所示:

x1 = .2
x2 = .33
x3 = -.422
x4 = -1

def function1():
    print("x1 is positive")

def function2():
    print("x2 is positive")

def function3():
    print("x3 is positive")

def function4():
    print("x4 is positive")

for x in range(10):    
    if x1 > 0:
        function1()

    if x2 > 0:
        function2()

    if x3 > 0:
        function3()

    if x4 > 0:
        function4()  
values = [.2, .33, -.422, -1, .1, -.76, -.36, 1, -.6, .73, .22, .5,  # ... ,
         ]
然后,它们都可以由一个在
for
循环中重复调用的函数来处理,如下所示:

def check_value(index, value):
    if value > 0:
        print('x{} is positive'.format(index+1))

for i, value in enumerate(values):
    check_value(i, value)

您尚未指明数据的来源,但我怀疑它是由某种自动过程生成的。如果您可以控制如何操作,那么更改内容应该不会太难,因此值以列表的形式显示。

是存储在单独变量中的500个浮点值中的每一个,即
x1
x2
<代码>x500
?如果是,那是你的第一个问题。如果没有,请回答您的问题,并告诉我们您真正在处理什么。是的,它们都是单独的变量。在这种情况下,您需要将它们全部放在某种容器中—a似乎合适,然后您可以使用单个函数轻松处理它们。看起来好像有一种,如果一组四个元素,在这种情况下,你可以使用一个由四个元素组成的列表。