如何分配给名称与字符串匹配的变量

有什么方法可以使下面的代码更优雅?意思是像几行。

            if beta == 'a':
                a = E3632A
            if beta == 'b':
                b = E3632A
            if beta == 'c':
                c = E3632A
            if beta == 'd':
                d = E3632A
            if beta == 'e':
                e = E3632A
            if beta == 'f':
                f = E3632A
            if beta == 'g':
                g = E3632A
            if beta == 'h':
                h = E3632A
            if beta == 'i':
                i = E3632A
            if beta == 'j':
                j = E3632A
    average=(a+b+c+d+e+f+g+h+i+j)/10
sunyinglu 回答:如何分配给名称与字符串匹配的变量

这是使用exec的一种方法,该方法可以工作,但不建议使用,因为exec通常是一种容易出错的处理方法:

import string
if beta in string.ascii_lowercase[:10]:
    exec("%s = E3632A" % beta)
average=(a+b+c+d+e+f+g+h+i+j)/10

更好的方法是将变量分配给字典:

vars = {'a':a,'b':b,'c':c,'d':d,'e':e,'f':f,'g':g,'h':h,'i':i,'j':j
         # other vars ...
          } 

import string
if beta in string.ascii_lowercase[:10]:
    vars[beta] = E3632A
average=sum(vars.values())/len(vars.values())  
,

分配了示例值

E3632A = 10

for i in range(ord('a'),ord('j')+1):
    globals()[chr(i)] = E3632A

avergae = (a+b+c+d+e+f+g+h+i+j)/10
print(avergae)

我想在这种情况下,我们必须将字符作为变量,所以在这种情况下,我们可能必须使用global,如果在类中,则可以使用settattr

class example: 
    def method_example(self):
       E3632A = 10

       for i in range(ord('a'),ord('j')+1):
         setattr(self,chr(i),E3632A)

       avergae = (a+b+c+d+e+f+g+h+i+j)/10
       print(avergae)
本文链接:https://www.f2er.com/3163639.html

大家都在问