2013-11-13 4 views
0
def main(): 
    uInput() 
    calc() 
def uInput(): 
    value1 = int(input('Please put in the first number')) 
    value2 = int(input('Please put in your second number')) 
    return value1 
    return value2 
def calc(value1,value2):  
    finalNumber = value1 + value2 
    print (finalNumber) 
main() 

Я использую python и пытаюсь сделать простую программу калькулятора. Я пытаюсь передать входные значения из модуля uInput, в модуль calc. Он продолжает высказывать недостающие два аргумента о позиции. Можете ли вы передать только одну переменную из модуля в другой модуль?Python 3, Передача данных из одной функции в другую

+0

В качестве примечания, '' uInput' и calc' являются _functions_. Модули - это совсем другое дело, и когда вы становитесь ближе к языку и начинаете «импортировать» вещи, вы будете путаться, если будете смешивать их. – abarnert

ответ

3

функция выходит на первое заявление возвращения он встречает, так return value2 никогда не достигается. Чтобы вернуть несколько значений использовать tuple:

return value1, value2  #returns a tuple 

Присвоить возвращаемое значение из uInput() переменных внутри main:

val1, val2 = uInput() #Assign using sequence unpacking 

Передайте эти переменные calc:

calc(val1, val2)  

Исправленная версия:

def main(): 
    val1, val2 = uInput() 
    calc(val1, val2) 

def uInput(): 
    value1 = int(input('Please put in the first number')) 
    value2 = int(input('Please put in your second number')) 
    return value1, value2 

def calc(value1,value2):  
    finalNumber = value1 + value2 
    print (finalNumber) 
main() 
1

В принципе, функция может возвращаться только один раз. Когда вы используете оператор return, поток буквально «возвращается», поэтому второе возвращение в вашем коде недостижимо.

Однако в питона, вы можете вернуть несколько значений в виде «кортеж»:

return value1,value2 
1

Вы можете вернуть две вещи одновременно из любой функции, но вы можете использовать только один оператор возврата. используя return x, y, это возвращает кортеж (x, y), который вы можете использовать в своей основной функции.

def uInput(): 
    value1 = int(input('Please put in the first number')) 
    value2 = int(input('Please put in your second number')) 
    return value1, value2 # this returns a tuple 

def main(): 
    val1, val2 = uInput() # unpack the tuple values into two variables 
    calc(val1, val2) 
+0

Можно ли вернуть три значения? – user2832472

+0

да и тот же принцип применяется. вам понадобятся 'val1, val2, val3 =' – jramirez

0
def uInput(): 
    value1 = int(input('Please put in the first number')) 
    value2 = int(input('Please put in your second number')) 
    return value1, value2    # this returns a tuple 

def calc(value1,value2):  
    finalNumber = value1 + value2 
    print (finalNumber) 

def main(): 
    val1, val2 = uInput() # unpack the tuple values into two variables 
    calc(val1, val2)  # this is one method which uses two temporary variables 

    # ALternatively you can use python's argument unpacker(*) to unpack the tuple in the function call itself without using any temporary variables. 

    calc(*uInput()) 

Для получения более подробной информации ознакомьтесь с http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists

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