I have a Python 3 program but the code below doesn't work in Python 3. I've searched for days but didn't find any solution. Is there any way to get this working in Python 3?

The only output I get is a syntax error like:

    print rc_time(pin_to_circuit)     # Read RC timing using pin #18
SyntaxError: invalid syntax

The setup looks like the following picture:

from pimylifeup.com


import RPi.GPIO as GPIO import time


    #define the pin that goes to the circuit 
pin_to_circuit = 7

def rc_time (pin_to_circuit):
    count = 0

    #Output on the pin for 
    GPIO.setup(pin_to_circuit, GPIO.OUT)
    GPIO.output(pin_to_circuit, GPIO.LOW)

    #Change the pin back to input
    GPIO.setup(pin_to_circuit, GPIO.IN)

    #Count until the pin goes high
    while (GPIO.input(pin_to_circuit) == GPIO.LOW):
        count += 1

    return count

#Catch when script is interrupted, cleanup correctly try:
    # Main loop
while True:
    print rc_time(pin_to_circuit) except KeyboardInterrupt:
pass finally:
  • 1
    What, exactly, isn't working? What would you like to happen, and how does your result differ from what you want? – Bex May 24 '18 at 13:04
  • A photoresistor is an analog sensor; if you want to use it digitally I think it normally would be paired with a resistor, but that looks like a capacitor in the diagram. Please explain the wiring in more detail if you want help, e.g., if that is a resistor, how many ohms is it. – goldilocks May 24 '18 at 13:19
  • 1
    the wiring is the following: I set up the capacitor for a delay. I load them for 0.1 sec and count till it is ´low´ on the GPIO. a resistor is not needed in this case. I updated the question with the output – Dinera May 24 '18 at 13:25
  • print(rc_time(pin_to_circuit)) – stevieb May 24 '18 at 13:50
  • @PeterPan, the correct way to debug a problem like that is to replace the line print rc_time(pin_to_circuit) with something like this print 1234 ..... that would give you the same error, which would tell you that the print statement is incorrectly formatted ..... you could then google python3 print statement and you would have your answer – jsotola May 24 '18 at 22:54

In Python 3 print is a function.

In Python 2 you could do print "hello".

In Python 3 you must do print("hello").


Isn't this just an indentation problem? Change the last four lines to:

while True:
    print rc_time(pin_to_circuit) except KeyboardInterrupt:
pass finally:
  • Thanks but the issue still exists. – Dinera May 24 '18 at 13:41
  • " print light_time(pin_to_circuit) " This line does not appear in the code you show us. – Gerard H. Pille May 24 '18 at 13:43
  • sorry for that. I changed the function and variable names in my project. I correct it in my request. – Dinera May 24 '18 at 13:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.