@Susann.M.23: Lerne ``for``-Schleifen. Das sind in aller Regel die ”normalen” Schleifen. Die braucht man öfter als ``while``-Schleifen. ``while``-Schleifen sind der Sonderfall den man manchmal braucht wenn es mit ``for`` nicht geht. ``while``-Schleifen die etwas ausdrücken was sonst eine ``for``-Schleife macht, sind komplizierter, brauchen in der Regel vor der Schleife schon Code um etwas zu initialisieren, und irgendwo in der Schleife, meistens gegen Ende noch mal Code um etwas zu aktualisieren. Das mehr Code, das ist weiter verteilter Code, und das ist fehleranfälliger als das alles in der ``for … in …:``-Zeile abzufrühstücken.
Ein Kommentar wie „# Variablen“ ist sinnfrei. Das sieht man doch, dass da im Code Variablen definiert werden. Kommentare sollten nicht beschreiben *was* der Code macht, denn das steht da ja bereits als Code sondern *warum* er dass so macht. Also dem Leser einen Mehrwert über den Code liefern. Ein ``# warte 5s`` vor einem ``time.sleep(5)`` liefert keinen Mehrwert aber mehr Arbeit wenn man die Zeit mal ändern will/muss, weil man dann auch immer den Kommentar identisch mit ändern muss.
Um externe Programme auszuführen gibt es das `subprocess`-Modul. `os.system()` sollte dafür nicht verwendet werden. Die Dokumentation dieser Funktion weist auch auf das `subprocess`-Modul hin.
Code: Alles auswählen
#!/usr/bin/env python3
import subprocess
import time
def main():
iteration_count = 1_000_000
beep_interval = 10 # in iteration counts.
beep_duration = 1 # in seconds.
beep_frequency = 440 # in Hz.
for x in range(1, iteration_count + 1):
print(x)
if x % beep_interval == 0:
print("Beeb aus geben")
subprocess.run(
[
"play",
"--null",
"--no-show-progress",
"--type",
"alsa",
"synth",
str(beep_duration),
"sine",
str(beep_frequency),
],
check=True,
)
print()
print()
time.sleep(5)