Invalid syntax, but not showing what it is!?! - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Invalid syntax, but not showing what it is!?! (/thread-4361.html) |
Invalid syntax, but not showing what it is!?! - WillHampGuy - Aug-10-2017 Hi guys, I've got a problem ? I've put some code into idle 3, and it's saying 'syntax error' when I run it, but it isn't showing me where the error is! If I can, I'll post a photo. I've just re downloaded noobs onto my pi so we're all up to date. The code is for a GPIO intruder alarm circuit. (Btw I'm not totally sure if some of the code is right, so please correct me if it's wrong!) Thanks in advance! Turns out I can't post a pic ( I probably just don't know how) so hopefully I will go on my computer and edit it in now ? RE: Invalid syntax, but not showing what it is!?! - ichabod801 - Aug-10-2017 You have not given us enough information to help you. Please copy and paste the full text that is telling you that there is a syntax error. RE: Invalid syntax, but not showing what it is!?! - WillHampGuy - Aug-10-2017 It won't let me edit the original text so here it is: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7,GPIO.IN) if GPIO.input(7)==True: print ("Secure") elif: GPIO.input(7)==False print ("Intruder alert")If it doesn't show up, there is a tab indent on the first 'print' and the 'elif' and a double tab before the second 'print' RE: Invalid syntax, but not showing what it is!?! - nilamo - Aug-10-2017 (Aug-10-2017, 08:53 PM)WillHampGuy Wrote: elif: GPIO.input(7)==False elif: is invalid, since there's no condition. The easy answer is: move the colon to the end of the line.
RE: Invalid syntax, but not showing what it is!?! - WillHampGuy - Aug-10-2017 Thanks! And that would fix all the errors? RE: Invalid syntax, but not showing what it is!?! - nilamo - Aug-10-2017 All obvious syntax errors, yes. Perhaps not logic errors. RE: Invalid syntax, but not showing what it is!?! - WillHampGuy - Aug-10-2017 Now it's showing a syntax error with the 'elif' highlighted. ?? RE: Invalid syntax, but not showing what it is!?! - DeaD_EyE - Aug-10-2017 if condition: # code for this case elif condition: # code for this case else: # code if no case is TrueIn your case you have the colon at the wrong position. A condition could be everything which can return a bool A condition for your if/elif statement can be GPIO.input(7) .You can do also the equality check GPIO.input(7) == True which returns also a boolean .If I guess, GPIO.input(7) should return an integer object. An integer object with the value 0 it False. If it has the value 1, it's True. 1 == 1.0 == True and 0 == 0.0 == False .Your fixed code: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7,GPIO.IN) if GPIO.input(7)==True: print ("Secure") elif GPIO.input(7)==False: print ("Intruder alert")Or easier: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7,GPIO.IN) if GPIO.input(7): print ("Secure") else: print ("Intruder alert")We know that GPIO.input only returns 1 or 0. There is no third case. Little hint: If you want to check if an object is a boolean, just check it with bool(your_object) . If the object has the special method __bool__ , it returns True or False . Then you can use this object in an if/elif statement.
RE: Invalid syntax, but not showing what it is!?! - WillHampGuy - Aug-11-2017 Thanks, but it's still giving me a syntax error!!?? And also can you explain to me how to use a bool please? I tried bool(GPIO.input(7)) btw. It's been a while since I did this! RE: Invalid syntax, but not showing what it is!?! - sparkz_alot - Aug-11-2017 You need to post your corrected code, plus the error code in it's entirety, all between the proper code tags. As to bool, DeaD_EyE went into great detail on what it is and how it is used. You might take the time to read the post, if you still have a question, be specific about which part you do not understand. According to your first post, if you explained it correctly, your code looked like this: import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(7,GPIO.IN) if GPIO.input(7)==True: print ("Secure") elif: GPIO.input(7)==False print ("Intruder alert")if that is true, than your "elif" is wrong, it should line up with the "if" and the second "print" should line up with the first. |