Я столкнулся с проблемой и решил задать ее здесь.Смотри, я использую следующий код для объяснения ниже:
x=y=z=2
def function1(x):
return 2+x
def function2(y):
return 4+y
def function3(z):
return 6 +z
use_1 = input("Type T to use 1 ")
use_2 = input("Type T to use 2 ")
use_3 = input("Type T to use 3 ")
h=(use_1=='T')*function1(x)+(use_2=='T')*function2(y)+(use_3=='T')*function3(z)
print(h)
**** объяснение: этот код по этой причине, что пользователь решает использовать какую из этих функций.Пользователь может захотеть использовать 1 и 3 или 2 и 3 или 1 и 2 или даже 1 или 2 или 3. Это возможно, выбрав T
.
Теперь у меня есть большая проблема: янаписание следующего кода только для одного вопроса.Мы можем видеть, что если funcrion 1
выбран пользователем, поэтому его аргументы используются в коде, но если пользователь не выбирает функцию 3
, его аргументы, которые e
и q
должны быть удалены в остальныхкод "везде, где e
существует".Мы делаем это вручную, удаляя и модифицируя код.Есть ли способ, когда пользователь выбирает 1
и не выбирает другую функцию, просто a
и q
находятся в коде?Я имею в виду, что все e
, c
удаляются автоматически.
Я надеюсь хорошо понять мое мнение.
ao = np.zeros((N,))
ao[0] = 0.3
an = np.zeros((N,))
q0o = np.zeros((N,))
qo[0] = 0.3
q0n = np.zeros((N,))
c0o = np.zeros((N,))
c0o[0] = 69
c0n = np.zeros((N,))
eo = np.zeros((N,))
eo[0] = 0.1
en = np.zeros((N,))
temp = 1e10
def 1(a,q):
return a+q**2
def 2(c,q):
return c/sqrt(q)
def 3(e,q):
return q-e
def TOTAL(a, c, e, q) :
total = 1(a,q) + 2(c,q) + 3(e,q)
return total
highest=0
with open('outputs/poly.txt', 'w') as f:
for i in range (1,N):
num = 0
R = np.random.uniform(0,1)
while True:
num += 1
an[i] = ao[i-1] + 0.001 * np.random.normal()
c0n[i] = c0o[i-1] + 0.01 * np.random.normal()
e0n[i] = e0o[i-1] + 0.01 * np.random.normal()
L = np.exp(-0.5 * (TOTAL(an[i], c0n[i], e0n[i], qn[i]) - TOTAL(ao[i-1], c0o[i-1], e0o[i-1], qo[i-1])))
LL=min(1,max(L,0))
if LL>R:
ao[i]= an[i]
c0o[i] = c0n[i]
e0o[i] = e0n[i]
qo[i] = qn[i]
chi = TOTAL(ao[i], c0o[i], e0o[i], qo[i])
else:
ao[i]= ao[i-1]
c0o[i] = co[i-1]
e0o[i] = e0o[i-1]
qo[i] = qo[i-1]
chi = TOTAL(ao[i], c0o[i], e0o[i], qo[i])
if (ao[i]>0 and c0o[i]>0 and e0o[i]>0) or num>100:
highest = max(num, highest)
break
f.write("{0}\t{1}\t{2}\t{3}\t{4}\n".format(round(chi,5),' ',round(c0o[i],5),' ',round(qo[i],5)))