# solve for a*b=c*d in python 2.7
# should work for arbitrary number of variables on each side ie abc=def
# user inputs
a = 1
b = 2
c = 7
d = 'solve' # solve for this value
lhs = [a,b] # left hand side of eq
rhs = [c,d] # right hand side of eq
if 'solve' in lhs:
value = c*d # get right hand side
divide = lhs
elif 'solve' in rhs:
value = a*b # get right hand side
divide = rhs
else:
raise ValueError('cannot tell which variable to solve for')
for num in divide: # divide by terms on 'solve' side
if num == 'solve':
continue # don't divide by 'solve' ... that would be silly
value = value/float(num)
easyCheck = a*b/float(c) # the easy way to do it (less dynamic though)
print 'solution is ',value
print 'easy check value is',easyCheck
IyBzb2x2ZSBmb3IgYSpiPWMqZCBpbiBweXRob24gMi43CiMgc2hvdWxkIHdvcmsgZm9yIGFyYml0cmFyeSBudW1iZXIgb2YgdmFyaWFibGVzIG9uIGVhY2ggc2lkZSBpZSBhYmM9ZGVmCgojIHVzZXIgaW5wdXRzCmEgPSAxCmIgPSAyCmMgPSA3CmQgPSAnc29sdmUnICMgc29sdmUgZm9yIHRoaXMgdmFsdWUKCmxocyA9IFthLGJdICMgbGVmdCBoYW5kIHNpZGUgb2YgZXEKcmhzID0gW2MsZF0gIyByaWdodCBoYW5kIHNpZGUgb2YgZXEKCmlmICdzb2x2ZScgaW4gbGhzOgogIHZhbHVlID0gYypkICAgICAgICMgZ2V0IHJpZ2h0IGhhbmQgc2lkZQogIGRpdmlkZSA9IGxocwplbGlmICdzb2x2ZScgaW4gcmhzOgogIHZhbHVlID0gYSpiICAgICAgICMgZ2V0IHJpZ2h0IGhhbmQgc2lkZQogIGRpdmlkZSA9IHJocwplbHNlOgogIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCB0ZWxsIHdoaWNoIHZhcmlhYmxlIHRvIHNvbHZlIGZvcicpCgpmb3IgbnVtIGluIGRpdmlkZTogICAjIGRpdmlkZSBieSB0ZXJtcyBvbiAnc29sdmUnIHNpZGUKICAgIGlmIG51bSA9PSAnc29sdmUnOgogICAgICBjb250aW51ZSAjIGRvbid0IGRpdmlkZSBieSAnc29sdmUnIC4uLiB0aGF0IHdvdWxkIGJlIHNpbGx5CiAgICB2YWx1ZSA9IHZhbHVlL2Zsb2F0KG51bSkKCmVhc3lDaGVjayA9IGEqYi9mbG9hdChjKSAjIHRoZSBlYXN5IHdheSB0byBkbyBpdCAobGVzcyBkeW5hbWljIHRob3VnaCkKCnByaW50ICdzb2x1dGlvbiBpcyAnLHZhbHVlCnByaW50ICdlYXN5IGNoZWNrIHZhbHVlIGlzJyxlYXN5Q2hlY2s=