I would be really grateful if you could help me solving out what is wrong in this code.
- The while loops, are not working
- When the program ask for the calculation it stops
The overall idea is to make this small program help me during calculation, and maybe if possible, add a visual interface.
def cycle():
while True:
newcalc = input('Do you want to make a new calculation? \n \t (Y/N)')
if newcalc.lower() in ["no","n"]:
newcalc = "no"
break
if newcalc.lower() in ["yes","y"]:
newcalc = "yes"
else:
print('This is not the right answer')
def counting_M():
while True:
concersion_1 = input('Do you want to convert from M to uM? (Y/N)')
if concersion_1.lower() in ["y", "yes"]:
print('This is the result of the conversion {} uM', str(data/1000)).format(data)
mw = input('What is the Molecular Weight of your compound, please in g/M?')
print('Your coumpound weights ug/ml', str((data) / (mw / 1000))).format(data)
if mw in float:
print('The data you have entered is not numeric')
break
data = input('Please, provide the absolute amount of compound you have, without units \n \t')
units = input('Please, indicate the measure unit you have \n A)M, B)mM, C)uM '
'\n 1A)g/liter, 2A)mg/ml, 3A)ug/ml \n \t')
if units.lower() == "a" :
print('Ok so you have M')
counting_M()
cycle()
Thank you
A few things you're doing wrong:
def cycle()
doesn't returnnewcalc
, rendering its assignement useless, since it isn't visible anywhere outside of the functioncycle
.data
twice, while also not converting fromstring
tofloat
, which crashes yourprint
commands, whenever you return a arithmetic operation (i.e.,str((data) / (mw / 1000))
).if mw in float
does not check ifmw
is afloat
. Do this by usingtry/except
example:
Although I'm not clear on what exactly you're trying to achieve, this code should do all the things you're attempting in your example.