Skocz do zawartości

[Python] Argumenty funkcji "widziane" przez obce funkcje


Recommended Posts

Witam

Mam taki kod

def hotel_cost(nights):
    return 140*nights
    
def plane_ride_cost(city):
    if city == 'Charlotte':
        return 183
    elif city == 'Tampa':
        return 220
    elif city=='Pittsburgh':
        return 222
    elif city=='Los Angeles':
        return 475  
    return city
    
def rental_car_cost(days):
   
    cost = days * 40
    if days >= 7:
        cost = cost - 50
    elif days >= 3:
        cost = cost - 20     
    return cost
    
def trip_cost(city, days, spending_money):
   return (hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days) + spending_money)

Pytanie:

funkcja trip_cost zwraca argument "days" funkcji "hotel_nights" podcas gdy ta, na samym początku programu ma tylko argument "nights". Wiadomo, że ilość dni dni w hotelu = ilość dni z wypożyczonym samochodem ale przecież program tego nie wie

 

Jak to jest że fukncja pobiera zupełnie obcy argument z innej funkcji?

Link to post
Share on other sites

 

 

Jak to jest że fukncja pobiera zupełnie obcy argument z innej funkcji?

Że co? Gdzie? :D 

 

Kompletnie nie rozumiem twojego pytania ;)

 

Funkcja hotel_cost ma parametr nights i zwraca tą wartość pomnożoną przez 140

 

Funkcja plane_ride_cost ma parametr city i zwraca stałą wartość, w zależności od tego co zawiera ten parametr.

 

Funkcja rental_car_cost ma parametr days i zwraca tą wartość pomnożoną przez 40 (minus ewentualna zniżka).

 

Funkcja trip_cost ma parametry city, days oraz spending_money. W niej wywołujesz powyższe funkcje przekazując do nich odpowiedni argument.

Link to post
Share on other sites

Rozumiem już, o co pytasz. Poczytaj o parametrach i argumentach funkcji (albo o argumentach aktualnych i formalnych - nazewnictwo jest różne).

Generalnie chodzi o to, że funkcja hotel_cost(nights) przyjmuje jakąś wartość za pomocą argumentu formalnego "nights". Wewnątrz tej funkcji, do wartości tej odwołujesz się za pomocą właśnie nazwy "nights". Wywołując tą funkcję, musisz przekazać jakąś wartość - może to być hotel_cost(3), hotel_cost(10), hotel_cost(alamakota). To co przekazujesz, to jest twój argument aktualny. Ty chcesz przekazać wartość zmiennej "days", więc wywołując tą funkcję piszesz hotel_cost(days). Zmienne "days" i "nights" tak naprawdę nic nie wiedzą o sobie.

W drugim przypadku masz funkcję rental_car_cost(days). To "days" to jest wartość przekazana do tej funkcji (argument formalny). W linijce  return (hotel_cost(days) + plane_ride_cost(city) + rental_car_cost(days) + spending_money), wywołując tą funkcję, też masz zmienną "days", ale to days jest twoim argumentem aktualnym - całkiem osobną zmienną.

 

Kilka linków:

http://polska.superhost.pl/funkcje2.htm

http://www.ithelpdesk.pl/kurs-c++/poziom-4/funkcje-c++-argumenty-formalne-argumenty-aktualne-porownanie-metod-przekazywania-argumentow-do-funkcji.html

  • Popieram 1
Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...