So I have the code:
def logdata(x, y):
try:
f = open('multlog.txt', 'a')
f.write("{0:g} * {1:g} = {2:g}\n".format(x,y, (x*y)))
except ValueError:
f.write("Error, you tried to multiply by something that wasn't a number")
raise
finally:
f.close()
print("This is a test program, it logs data in a text file, 'multlog.txt'")
fn = input("Enter the first number you'd like to multiply by: ")
sn = input("Enter the second number you'd like to multiply by: ")
logdata(int(fn), int(sn))
And what I want it to do, is when it reaches a value error, for it to write to the file,”Error, you tried to multiply by something that wasn’t a number”. But, if the file reaches a value error if the user inputs a letter, say “j”,ValueError: invalid literal for int() with base 10: 'j', it doesn’t write to the file!
At least two problems:
exceptblock.int()I would rewrite to something like the below example.
If you use the
withstatement then you can do without thefinallyblock.