Если вы не хотите тратить память на список, просто сохраните maximun в переменной и сравните его с полученными значениями на каждой итерации.
maxProfit = float("-inf") # First contendant is -Infinity, a real low number
for NP in range(MP, MaxP+1, 10):
CostofTicket = TP - (((NP - MP)/10)*.5)
Gross = NP * CostofTicket
Profit = (NP * CostofTicket) - FixedCost
if Profit > maxProfit: # Here is the Fight. Winner stays with the trophy "maxProfit"
maxProfit = Profit
print (NP, end=" ")
print ("$", format(CostofTicket, "3,.2f"), end=" ")
print ("$", format(Gross, "3,.2f"), end=" ")
print ("$", format(FixedCost, "3,.2f"), end=" ")
print ("$", format(Profit, "3,.2f"))
print ("Maximum Profit: ", end="")
print (format(maxProfit, "3,.2f")) # And the winer is...
print ("Maximum Profit Ticket Price: ")
print ("Maximum Profit Number of Passengers: ")
Этот код не использует память (список) и дает вам интуитивное представление о том, как реализована упомянутая функция max
.
Вы также можете избежать использования памяти с генератором:
import operator
def ticket_values(MP, MaxP, TP, FixedCost):
for NP in range(MP, MaxP+1, 10):
CostofTicket = TP - (((NP - MP)/10)*.5)
Gross = NP * CostofTicket
Profit = (NP * CostofTicket) - FixedCost
yield (NP, CostofTicket, Gross, Profit)
for ticket_value in ticket_values(MP, MaxP, TP, FixedCost):
print (ticket_value[0], end=" ")
print ("$", format(ticket_value[1], "3,.2f"), end=" ")
print ("$", format(ticket_value[2], "3,.2f"), end=" ")
print ("$", format(FixedCost, "3,.2f"), end=" ")
print ("$", format(ticket_value[3], "3,.2f"))
print ("Maximum Profit: ", end="")
print (format(max(ticket_values(MP, MaxP, TP, FixedCost), key=operator.itemgetter(3))[3], "3,.2f"))
print ("Maximum Profit Ticket Price: ")
print ("Maximum Profit Number of Passengers: ")
Вы получите идею.
14.03.2016