2013-03-13 2 views
0

В это время я сделал это изначально, попросив пользователя ввести время, но когда он не вернет время в переменных. Я получаюPython возвращает не возвращаемые переменные

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 

Я знаю, что установленная часть времени dosnt должна быть функцией, но я хочу использовать ее позже.

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() 

ответ

2

return оператор возвращает значения, а не переменные. И если ничего не происходит с возвращаемыми значениями, они отбрасываются.

Вы вызываете setTime(), но ничего не делаете со значениями, которые он возвращает.

Вы должны сохранить возвращаемые значения в новых имен:

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

Я использовал те же имена, используемые в самой setTime() функции, но я мог бы точно так же дали им разные имена:

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

, а затем использовали эти имена в остальной части кода:

print(baz, ":", spam, ":", eggs) 
Смежные вопросы