有什么方法可以使下面的代码更优雅?意思是像几行。
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
答案 0 :(得分:2)
这是使用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())
答案 1 :(得分:1)
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)