On 21/09/13 23:44, Arron Sutcliffe wrote:
Hi i have been working on a currency converter for school and i have
been having a hard time with this syntax error "Expected indented block"
and i don't understand why it isn't working.
It tells you, it's expecting an indented block...
v_fallback = 1
while v_fallback == 1:
print("Please enter your current currency")
v_current = input()
if v_current == ("USD" or "usd" or "US Dollars" or "us dollars"):
print("Please enter the name of the currency you wish to
convert to")
print("Your options are GBP, EUR, INR, AUD, CAD, AED or BACK to
return to the Main Menu")
v_final = input()
if v_final ==("GBP" or "gpb"):
Python is expecting an indented block of code to do something when the
if is true. So eoitrher you put some code here or...
if v_final == ("EUR" or "eur"):
You indent this line. But thats probably a bad idea.
if v_final == ("INR" or "inr"):
if v_final == ("AUD" or "aud"):
if v_final == ("CAD" or "cad"):
BTW these lines are almost certainly not doing what you think they are.
This is not testing whether v_final is one of the values in the if tet,
it is testing whether v_final has the same truth(boolewan0 vale as the
expression (str1 or str2) which is always True.
You probably want something like
if v_final.upper() == "GBP": # do something
or, more likely in this case:
if v_final.upper() in ("GBP", "INR", "AUD", ...other values): #do this
if v_final == ("AED" or "aed"):
if v_final == ("BACK" or "back"):
else:
print ("ERROR - Please enter a valid currency, if incorrect
currency is entered again program will close")
print("Your options are GBP, EUR, INR, AUD, CAD, AED or
BACK to return to the main menu")
v_final = input()
if v_final == ("GBP" or "gbp"):
if v_final == ("EUR" or "eur"):
if v_final == ("INR" or "inr"):
if v_final == ("AUD" or "aud"):
if v_final ==("CAD" or "cad"):
if v_final == ("AED" or "aed"):
if v_final == ("BACK" or "back"):
else print ("ERROR - Program will close"):
v_fallback = 0
And there is a programming principle called DRY (Don't Repeat Yourself).
You have the same set of tests here as above. Rather than limit the user
to 2 goes you could wrap the tests into a while loop and only have them
once. That way there is never any risk of them getting out of step
with each other. (You could also encapsulate them in a function but you
might not have covered functions yet!)
HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor