Max(Liste) funktioniert ... "unerwartet"
Verfasst: Sonntag 7. August 2022, 15:15
Ich stoße gerade mal wieder an meine, bzw. Pythons Grenzen. Ich habe ein Primzahlprogramm geschrieben, das aus einer Datei mit Primzahlen die Abstände berechnet. Das funktioniert soweit auch gut. Der Plot ist okay und scheint mathematisch zu stimmen. Wenn ich allerdings aus der Liste mit den Abständen den Maximalwert (laut Plot und Liste "20") herausfiltern möchte, sagt die Max()-Funktion "8". Warum? Was mache ich falsch?
Hier der Code (ich weiß, es geht sicher schöner und mehr pythonisch, aber das ist halt meiner):
Und hier ist die Ausgabe:
Vorige Primzahl: 991
Aktuelle Primzahl: 997
Abstand: 6
['1', '2', '2', '4', '2', '4', '2', '4', '6', '2', '6', '4', '2', '4', '6', '6', '2', '6', '4', '2', '6', '4', '6', '8', '4', '2', '4', '2', '4', '14', '4', '6', '2', '10', '2', '6', '6', '4', '6', '6', '2', '10', '2', '4', '2', '12', '12', '4', '2', '4', '6', '2', '10', '6', '6', '6', '2', '6', '4', '2', '10', '14', '4', '2', '4', '14', '6', '10', '2', '4', '6', '8', '6', '6', '4', '6', '8', '4', '8', '10', '2', '10', '2', '6', '4', '6', '8', '4', '2', '4', '12', '8', '4', '8', '4', '6', '12', '2', '18', '6', '10', '6', '6', '2', '6', '10', '6', '6', '2', '6', '6', '4', '2', '12', '10', '2', '4', '6', '6', '2', '12', '4', '6', '8', '10', '8', '10', '8', '6', '6', '4', '8', '6', '4', '8', '4', '14', '10', '12', '2', '10', '2', '4', '2', '10', '14', '4', '2', '4', '14', '4', '2', '4', '20', '4', '8', '10', '8', '4', '6', '6', '14', '4', '6', '6', '8', '6']
<class 'list'>
168 Zahlen berechnet.
Größter Abstand zwischen zwei Primzahlen: 8
Kleinster Abstand zwischen zwei Primzahlen: 1
Process finished with exit code 0
Hier der Code (ich weiß, es geht sicher schöner und mehr pythonisch, aber das ist halt meiner):
Code: Alles auswählen
import matplotlib.pyplot as plt
file = open("primes_in1000.txt", "r")
delta_list = []
number_of_primes = 1
previous_number = 2
all_lines_of_file = file.readlines()
for line in all_lines_of_file:
print("Vorige Primzahl: ", previous_number)
current_number = int(line)
print("Aktuelle Primzahl: ", current_number)
delta_primes = current_number - previous_number
print("Abstand: ", delta_primes)
previous_number = current_number
delta_list.append(str(delta_primes))
number_of_primes +=1
print(delta_list)
print(type(delta_list))
print(number_of_primes, "Zahlen berechnet.")
delta_max = max(delta_list)
print("Größter Abstand zwischen zwei Primzahlen: ", delta_max)
delta_min = min(delta_list)
print("Kleinster Abstand zwischen zwei Primzahlen: ", delta_min)
plt.plot(delta_list)
plt.show()
file.close()
Vorige Primzahl: 991
Aktuelle Primzahl: 997
Abstand: 6
['1', '2', '2', '4', '2', '4', '2', '4', '6', '2', '6', '4', '2', '4', '6', '6', '2', '6', '4', '2', '6', '4', '6', '8', '4', '2', '4', '2', '4', '14', '4', '6', '2', '10', '2', '6', '6', '4', '6', '6', '2', '10', '2', '4', '2', '12', '12', '4', '2', '4', '6', '2', '10', '6', '6', '6', '2', '6', '4', '2', '10', '14', '4', '2', '4', '14', '6', '10', '2', '4', '6', '8', '6', '6', '4', '6', '8', '4', '8', '10', '2', '10', '2', '6', '4', '6', '8', '4', '2', '4', '12', '8', '4', '8', '4', '6', '12', '2', '18', '6', '10', '6', '6', '2', '6', '10', '6', '6', '2', '6', '6', '4', '2', '12', '10', '2', '4', '6', '6', '2', '12', '4', '6', '8', '10', '8', '10', '8', '6', '6', '4', '8', '6', '4', '8', '4', '14', '10', '12', '2', '10', '2', '4', '2', '10', '14', '4', '2', '4', '14', '4', '2', '4', '20', '4', '8', '10', '8', '4', '6', '6', '14', '4', '6', '6', '8', '6']
<class 'list'>
168 Zahlen berechnet.
Größter Abstand zwischen zwei Primzahlen: 8
Kleinster Abstand zwischen zwei Primzahlen: 1
Process finished with exit code 0