jnlnuhliyggcvhj
jnlnuhliyggcvhj

Reputation: 15

Python return not returning variables

In this clock i made it initially asks for the user to input the time but when it wont return the time in variables. I get a

Traceback (most recent call last):
  File "C:/Documents and Settings/Brett/My Documents/Programming/Python/clock.py", line 20, in <module>
    print(hour,":",mins,":",sec)
NameError: name 'hour' is not defined

I know the set time part dosnt need to be a function but i want to use it later.

import time

def setTime():
    print("Set time \n--------")
    time=input("24 hour or 12 hour \nType 1 or 2: ")
    if time=="2": hour12=input("AM or PM \nType 1 or 2: ")
    else: hour12=0
    hour=input("Hour: ")
    mins=input("Minute: ")
    print("--------")
    sec=0
    return time,hour12,hour,mins,sec

def printTime24():
    print(hour,":",mins,":",sec)

#def printTime12():

setTime()
print(hour,":",mins,":",sec)
while True:
    time.sleep(1)
    sec+=1
    if sec == 60:
        sec=0
        mins+=1
    if mins == 60:
        mins=0
        hour+=1
    if time=="1": printTime24()
#    elif time=="2": printTime12()

Upvotes: 0

Views: 2946

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121386

The return statement returns values, not variables. And if nothing is done with the returned values, they are discarded.

You call setTime() but do nothing with the values it returns.

You need to store the returned values in new names:

time, hour12, hour, mins, sec = setTime()

I used the same names as used in the setTime() function itself, but I could just as well have given them different names:

foo, bar, baz, spam, eggs = setTime()

and then used those names in the rest of the code:

print(baz, ":", spam, ":", eggs)

Upvotes: 3

Related Questions