Ansatz 1: Keine temporäre Listen und Sortierung in diesem Ansatz benötigt. Mit einer temporären Liste (erhöht die Speicherkomplexität) und sortiert und Summe der Liste (erhöht die Zeitkomplexität): Ausgeschlossen ist nur eine der max Zahlen
def excludeMax():
biggest_sof_far = None
sum_of_inputs = 0
while True:
result = input('Enter next number or end:')
if result == 'end':
break
if biggest_sof_far == None:
biggest_sof_far = result
elif result > biggest_sof_far:
sum_of_inputs += biggest_sof_far
biggest_sof_far = result
else:
sum_of_inputs += result
return sum_of_inputs
if __name__ == "__main__":
print excludeMax()
Ansatz 2 (nicht mit Dubletten beschäftigen). Dies schließt nur eine max Zahlen (befasst sich nicht mit Dubletten)
def excludeMax():
input_numbers = []
while True:
result = input('Enter next number or end:')
if result == 'end':
break
input_numbers.append(result)
input_numbers.sort()
return sum(input_numbers[:-1])
if __name__ == "__main__":
print excludeMax()
Beide Ansätze gehen davon aus, dass Sie nur ein max Element ausschließen möchten. Wenn Sie alle max Elemente ausschließen (bei doppelter max Zahlen):
Ansatz 1: Ausgeschlossen sind auch die doppelten max Zahlen
def excludeMax():
biggest_sof_far = None
sum_of_inputs = 0
while True:
result = input('Enter next number or end:')
if result == 'end':
break
if biggest_sof_far == None:
biggest_sof_far = result
elif result == biggest_sof_far:
pass
elif result > biggest_sof_far:
sum_of_inputs += biggest_sof_far
biggest_sof_far = result
else:
sum_of_inputs += result
return sum_of_inputs
if __name__ == "__main__":
print excludeMax()
Ansatz 2: Ausgeschlossen sind auch die doppelten max Zahlen
können Sie einfach 'result.remove (max (Zahlen))' – ozgur
@ozgur wahr, habe Python in einer Weile nicht geübt. –