Python 如何根据类或组为函数分配变量?

Python 如何根据类或组为函数分配变量?,python,Python,我想做的是这样的: if (color = "red"): a = 1 b = 2 c = 3 break if (color = "blue"): a = 5 b = 6 c = 7 break color = "blue" z = a + b + c print("The answer is = " + str(z)) 我有几个类想要分配变量的值,然后根据我定义的类提取这些值。这是可能的吗?假设您的意思是将类作为一个组

我想做的是这样的:

if (color = "red"):
    a = 1
    b = 2
    c = 3
    break

if (color = "blue"):
    a = 5
    b = 6
    c = 7
    break

color = "blue"
z = a + b + c


print("The answer is = " + str(z))
我有几个类想要分配变量的值,然后根据我定义的类提取这些值。这是可能的吗?

假设您的意思是将类作为一个组而不是编程定义,那么您可以使用字典来表示变量的数量

在这种情况下,您可以使用嵌套字典并访问具有O1复杂性的值

d = {'red': {'a': 1, 'b': 2, 'c': 3},
     'blue': {'a': 5, 'b': 6, 'c': 7}}

color = 'blue'
d_color = d[color]
z = d_color['a'] + d_color['b'] + d_color['c']

print("The answer is = " + str(z))
# The answer is = 18
或者,更简单地说,您可以通过sum和dict.values对字典中的所有值求和:


我认为简单的解决方案是使用字典,将每种颜色的值分组:

classes = {'red':[1,2,3], 'blue':[5,6,7]} #etc...
color='red'
a,b,c = classes[color]
z = a + b + c
print('The answer is', z)
如果不同颜色的值的数量不同:

z=sum(classes[color])
print('The answer is', z)

我猜您要问的是如何放置所有这些if语句,假设您的实际代码有两个以上的if语句?然后调用该函数?在Python/OO术语中,类不是指它,而是指……某组值

如果是:

# Define a function that takes color as a parameter
def colorvals(color):
    # Indent your existing if statements to make them part of the function.
    # You also need to fix the = SyntaxError; use == for comparison
    if (color == "red"):
        a = 1
        b = 2
        c = 3
        break

    if (color == "blue"):
        a = 5
        b = 6
        c = 7
        break

    # At the end, return the values to the caller.
    return a, b, c

color = "blue"
# Now you can call that function and use the results.
a, b, c = colorvals(color)
z = a + b + c
您可以通过以下方法来改进此功能:

每个if中的参数都是无意义的。 休息没有任何作用。 写a,b,c=1,2,3…或者只返回1,2,3可能更清楚。 对于第一个条件之后的每个条件,您可能需要elif而不是if。 您可能需要一些错误处理,因此,如果您将colorvals称为“nota color”,则返回的异常比UnboundLocalError更有意义。 您应该考虑使用dict而不是一系列if语句。
但是我已经对您现有的代码做了最小的更改,我猜您希望这样做。

一种方法是使用一个返回三个值的函数,并使用该函数设置a、b、c

def set_colour(colour_string):

    if colour_string == "red":
        return 1,2,3

    if colour_string == "blue":
        return 5,6,7

    Print("Invalid colour string")
    return None

a,b,c = set_colour("red")

z = a + b + c
print(str(z))

a,b,c = set_colour("blue")

z = a + b + c
print(str(z))
def color_sum(color):
    if color == "red":
        a = 1
        b = 2
        c = 3
    else:
        a = 5
        b = 6
        c = 7
    z = a + b + c
    print("The answer is = " + str(z))

color_sum("blue")

希望这对您有所帮助

如果您正试图按照@abarnert提到的那样做,您可以将这些条件语句放在函数中,并用任何颜色调用它

def color_sum(color):
    if color == "red":
        a = 1
        b = 2
        c = 3
    else:
        a = 5
        b = 6
        c = 7
    z = a + b + c
    print("The answer is = " + str(z))

color_sum("blue")

这个问题似乎有点不清楚,但您可以在类构造函数中为变量定义默认值,如so def _init _self,x=default values您是在问如何获取这些if语句并将它们放入可以调用的函数中吗?好的,abarnert。我明白你的意思。我对python非常陌生,并且正在努力学习。非常感谢jpp。这正是我想做的。@cheme_wilson,当然,没问题。请随意接受有帮助的答案。