Warum sollte die Summe der 2 höchsten Würfe 3 sein? Wenn alle 3 Würfel eine 1 zeigen, ist die Summe der 2 "höchsten" Würfe 2 und nicht 3!

Außerdem möchte ich dies mit einer variablen Anzahl von Gesamtwürfen ausprobieren können (nicht fest codiert auf 100). Bitte bearbeite den Code so, dass:
* Die Summe von 2 im Histogramm enthalten ist
* Ich dieses Skript von meiner Befehlszeile aus mit einem Argument aufrufen kann, das die Gesamtzahl der Würfe definiert.
Schreibe einen Code in Python, der 3 d20-Würfel wirft, dann die beiden höchsten Würfe addiert und den niedrigsten Wurf entfernt. Wiederhole dies 100 Mal und bilde am Ende der Schleife ein Histogramm für die Häufigkeiten jeder Zahl. Hier ist ein Python-Code, der 3 d20-Würfel wirft, dann die beiden höchsten Würfe addiert und den niedrigsten Wurf entfernt. Dieser Vorgang wird 100 Mal wiederholt und am Ende der Schleife wird ein Histogramm für die Häufigkeiten jeder Zahl erstellt:
```
import random
import matplotlib.pyplot as plt

rolls = []
for i in range(100):
    dice = [random.randint(1, 20) for _ in range(3)]
    rolls.append(sum(sorted(dice)[1:]))
    
plt.hist(rolls, bins=range(3, 41))
plt.xlabel('Summe der beiden höchsten Würfe')
plt.ylabel('Häufigkeit')
plt.title('Histogramm der Würfe')
plt.show()
```

Erklärung:

Wir beginnen mit dem Importieren der benötigten Module: random zum Generieren von Zufallszahlen und matplotlib.pyplot zum Plotten des Histogramms.
Wir erstellen eine leere Liste namens 'rolls', um die Ergebnisse jedes Wurfs zu speichern.
Wir verwenden eine for-Schleife, um den Wurfvorgang 100 Mal zu wiederholen. In jeder Iteration der Schleife:
Wir generieren eine Liste namens 'dice', die 3 zufällige Ganzzahlen zwischen 1 und 20 (einschließlich) enthält, indem wir eine List Comprehension und die Funktion 'random.randint()' verwenden.
Wir sortieren die Liste in aufsteigender Reihenfolge mit der Funktion 'sorted()' und schneiden das erste Element ab (d.h. den niedrigsten Wurf) mit [1:].
Wir addieren die verbleibenden zwei Elemente mit der Funktion 'sum()' und fügen das Ergebnis der Liste 'rolls' hinzu.
Schließlich plotten wir das Histogramm der Liste 'rolls' mit 'plt.hist()', wobei die Bins auf einen Bereich von Ganzzahlen von 3 (die minimale mögliche Summe der beiden höchsten Würfe) bis 40 (die maximale mögliche Summe der beiden höchsten Würfe) festgelegt sind, und fügen Beschriftungen und einen Titel zum Plot mit 'plt.xlabel()', 'plt.ylabel()' und 'plt.title()' hinzu.
Die Summe von zwei 1en ist 2, nicht 3, daher sollten die Bins deines Histogramms bei 2 und nicht bei 3 beginnen.
Du machst derzeit 100 fest codierte Würfe - du möchtest ein Kommandozeilenargument für die Anzahl der Würfe akzeptieren.
Du musst die Kommandozeilenargument-Verarbeitung behandeln.

Korrigierter Code:
```py
import sys
import random
import matplotlib.pyplot as plt

rolls = []
num_rolls = int(sys.argv[1])
for i in range(num_rolls):
    dice = [random.randint(1, 20) for _ in range(3)]
    rolls.append(sum(sorted(dice)[1:]))

plt.hist(rolls, bins=range(2, 41))
plt.xlabel('Summe der beiden höchsten Würfe')
plt.ylabel('Häufigkeit')
plt.title('Histogramm der Würfe')
plt.show()
```
Du würdest es wie folgt aufrufen:
`python dice_rolls.py 1000`

um 1000 Würfe durchzuführen.