2014-02-21 3 views
0

Есть ли простой способ вызова переменной из одной функции в другую? Я пытаюсь сделать программу преобразования для расстояния/времени/скорости на выходе должен выглядеть следующим образом:Вызов переменных из других функций

1 Enter the distance [m]: 400 
2 Enter the time [min]: 0.7197 
3 
4 Original distance: 400 m 
5 = 0.2486 mi 
6 = 437.6 yd 
7 = 1312.4 ft 
8 = 15748.0 in 
9 
10 Your distance and time give speeds of: 
11 9.26 m/s, 10.13 yd/s, 33.35 km/hr, and 20.73 mi/hr. 

То, что я до сих пор это:

def getInput(): 
    dist=int(input("Enter the distance [m]: ")) 
    time=input("Enter the time [min]: ") 
    convDist(dist,time) 

def convDist(dist,time): 
    miles=dist*.0006214 
    yards=dist*1.094 
    feet=dist*3.281 
    inches=dist*39.37 
    km=dist*.001 
    print("Original distance: ",dist) 
    print("= ",miles," mi") 
    print("= ",yards," yd") 
    print("= ",feet," ft") 
    print("= ",inches," in") 
    print() 
    convTime(time) 


def convTime(time): 
    time=float(time) 
    seconds=time*60 
    hours=time/60 
    calcSpeed(hours,seconds) 

def calcSpeed(hours,seconds): 
    ms=dist/seconds 
    yds=yards/seconds 
    kmhr=km/hours 
    mihr=miles/hours 
    print("Your distance and time give speeds of:\n" 
    ,m,"m/s",yds,"yd/s",kmhr,"km/hr",mihr,"mi/hr") 


def main(): 
    getInput() 

main() 

Где я возникли проблемы получает номера (входы) от первой функции до функции calcSpeed ​​(), где мне нужен этот вход для вычисления скорости.

+0

Добавить их в список лямбда (список параметров) – BRFennPocock

+0

не появится ли когда-либо что-либо возвращение ... есть методы возвращают значение? – Trent

ответ

0

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

Ваши функции convTime и convDist могут быть переписаны так, чтобы они содержали заявление return, и они возвращают материал, который вы хотели бы получить вне функции в соответствующей форме.

Пример

def convTime(time): 
    time=float(time) 
    seconds=time*60 
    hours=time/60 
    return {'time':time,'seconds':seconds,'hours':hours} 

И тогда в вашей вызывающей функции

time_dict = convTime(time) 
calcSpeed(dist,time_dict) 

Вы должны изменить свою calcSpeed функцию соответственно

0

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

def getInput(): 
    dist=int(input("Enter the distance [m]: ")) 
    time=input("Enter the time [min]: ") 

    return dist, time 

Затем используйте значения, возвращаемые одной функцией для следующей функции.

dist,time = getInput() 
miles,yards,feet,inches,km = convDist(dist,time) 

и так далее ...

+0

Разве это не заставило бы его перепрофилировать на время и время, если бы я вызвал его? – Montop20

Смежные вопросы