我想做的是这样的事情:
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))
我有几个类想要赋值变量,然后根据我定义的类来拉取这些值。这可能吗?
答案 0 :(得分:1)
假设您将 class 表示为组而不是编程定义,则可以使用字典表示可变数量的变量。
在这种情况下,您可以使用嵌套字典并访问O(1)复杂度的值。
getFactory()
或者,更简单地说,您可以通过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
答案 1 :(得分:1)
我认为简单的解决方案是使用字典,为每种颜色分组值:
program main
use global
implicit none
type(myVar_) :: ans
Ni = 10
Nj = 20
if (allocated(ans%P)) deallocate(ans%P)
allocate(ans%P(1:Ni, 1:Nj))
call foo(ans)
print *, P
end program main
module global
integer, parameter :: dp=kind(0.d0)
integer :: Ni, Nj
type myVar_
real(dp), allocatable :: P(:,:)
end type myVar_
end module global
subroutine foo(myVar)
use global
implicit none
type(myVar_) :: myVar
call foo2(myVar%P)
end subroutine
subroutine foo2(P)
use global
implicit none
real(dp), intent(inout) :: P(:,:)
! do calculations for P
end subroutine foo2
如果值的数量与下一个颜色不同:
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)
答案 2 :(得分:1)
我猜你要问的是如何将所有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
中的parens都没有意义。break
s什么都不做。a, b, c = 1, 2, 3
...或只是return 1, 2, 3
。elif
而不是if
。colorvals('not a color')
,你会得到一个比UnboundLocalError
更有意义的例外。if
语句链。但是我对现有代码做了最小的改动,做了我猜你想做的事。
答案 3 :(得分:0)
一种方法是让一个函数返回你的三个值,并用函数
设置a,b,cdef 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))
希望这有帮助
答案 4 :(得分:0)
如果你试图像@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")