2016-01-29 2 views
-1

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

Это мой код:

price=0 
TotalPrice=0 

def SumPrice(price,TotalPrice): 
    if cup_cone=="cup": 
     price=(price+(mass/10)*0.59)*TotalSet 
    else: 
     if cone_size=="small": 
      price=(price+2)*TotalSet 
     else: 
      if cone_size=="medium": 
       price=(price+3)*TotalSet 
      else: 
       price=(price+4)*TotalSet 

    if Member_Ans=="yes": 
     TotalPrice=TotalPrice+price*0.90 

    print(price,TotalPrice) 
    return (price) 
    return (TotalPrice) 

def PrintDetails(price,TotalPrice,Balance): 
    SumPrice(price,TotalPrice) 
    if Member_Ans=="yes": 
     print("Member ID: ", loginID, " (" , Username, ")") 

    for element in range (len(UserFlavor)): 
     print (UserFlavor[element], "--- ", UserFlavorPercentage[element], "%") 

    print ("Total set = ", TotalSet) 
    print ("Total price = RM %.2f" % (price)) 
    if Member_Ans=="yes": 
     print ("Price after 10% discount = RM %.2f" % (TotalPrice)) 

    while True: 
     Payment=int(input("Please enter your payment: ")) 
     if Payment<TotalPrice: 
      print("Not enough payment.") 
     if Payment >= TotalPrice: 
      break 

    Balance=Balance+(Payment-TotalPrice) 
    print(Balance) 

PrintDetails(price,TotalPrice,Balance) 

Когда я пытаюсь напечатать price и TotalPrice, он печатает 0, почему?

+1

Вы не можете вернуться дважды. Ваша функция заканчивается первым возвращаемым утверждением, которое достигнуто. – timgeb

+0

Я изменил, чтобы вернуть «цену», но он все еще печатает «0». Как его решить? – Jess

+1

@ Jess вам нужно точно описать проблему, с которой вы столкнулись, вход и ожидаемый результат для нас, чтобы помочь вам – Idos

ответ

0

Ваш второй return заявление о первой функции недоступен! btw попробуйте не использовать глобальные переменные в вашем коде, вместо этого получите доступ к возвращаемым значениям вашей первой функции.

def SumPrice(): 
    price = 0 
    TotalPrice = 0 
    if cup_cone=="cup": 
     price=(price+(mass/10)*0.59)*TotalSet 
    else: 
     if cone_size=="small": 
      price=(price+2)*TotalSet 
     else: 
      if cone_size=="medium": 
       price=(price+3)*TotalSet 
      else: 
       price=(price+4)*TotalSet 

    if Member_Ans=="yes": 
     TotalPrice=TotalPrice+price*0.90 

    return price, TotalPrice 

def PrintDetails(): 
    price, TotalPrice = SumPrice() 
    if Member_Ans=="yes": 
     print("Member ID: ", loginID, " (" , Username, ")") 

    for element in range (len(UserFlavor)): 
     print (UserFlavor[element], "--- ", UserFlavorPercentage[element], "%") 

    print ("Total set = ", TotalSet) 
    print ("Total price = RM %.2f" % (price)) 
    if Member_Ans=="yes": 
     print ("Price after 10%% discount = RM %.2f" % (TotalPrice)) 

    while True: 
     Payment=int(input("Please enter your payment: ")) 
     if Payment<TotalPrice: 
      print("Not enough payment.") 
     if Payment >= TotalPrice: 
      break 

    Balance=Balance+(Payment-TotalPrice) 
    print(Balance) 

PrintDetails() 
+0

Я удалил глобальные переменные, но это приводит к ошибке (NameError: имя «цена» не определено) – Jess

+0

@Jess Отступ этой строки '' 'PrintDetails (цена, TotalPrice, Balance)' '' был некорректным, теперь попробуйте код. –

+0

Я добавил после вашего напоминания, но он по-прежнему вызывает ту же ошибку. – Jess

3

Вы пытаетесь использовать return дважды, что не допускается (ваша функция будет завершена, как только она достигнет 1-го return, сделав другой бесполезным).
Вы можете, однако, возвращать оба значения в одном операторе:

return (price, TotalPrice) 

А затем присвоить значение кортежа или что-нибудь еще вы хотели бы:

my_tuple = SumPrice(a, b) 

или

var1, var2 = SumPrice(a, b) 
+0

Отлично, Используется мой ответ и проголосовали за мой пост? –

+0

Если вы подразумеваете, что я скопировал ваш ответ, тогда вы должны шутить, так как я ответил за 2 минуты до этого. – Idos

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