[Python-de] Gehoertraining mit geringen Python-Kenntnissen

Peter Otten __peter__ at web.de
Sa Okt 20 09:52:25 EDT 2018


Am Sa Oktober 20 2018, 12:46:47 schrieb Stefan Ram:
>   Gerade habe ich zu meinem Kurs das folgende Programm zum
>   Gehörtraining als Programmbeispiel hinzugefügt.
> 
>   Man beachte, wie darin Dinge, die man normalerweise mit Hilfe
>   von Vergleichsoperatoren und Kontrollstrukturen ausdrücken
>   würde, ohne Vergleichsoperatoren und Kontrollstrukturen
>   formuliert werden, da Vergleichsoperatoren und
>   Kontrollstrukturen an der Stelle des Kurses, an der dieses
>   Skript vorgestellt werden soll, noch nicht behandelt wurden.
>   Grundrechenarten (einschließlich »+« und »*« für Strings),
>   Funktionsaufrufe (sowie auch Kommentare, Namen, Zuweisungen
>   und from-Importe) wurden hingegen schon behandelt ...
> 
> from winsound import Beep
> from random import random
> from math import isclose

Zu früh für Vergleichsoperatoren, aber dann isclose() aus dem Hut zaubern...

> quinte = 2/3
> grosse_terz = 4/5
> 
> erste_frequenz_in_Hz = int( random() * 1000 + 110 )
> intervall = int( random() * 2 ) # 1 = Quinte, 0 = grosse Terz
> frequenzverhaeltnis = intervall * quinte +( 1 - intervall )* grosse_terz
> zweite_frequenz_in_Hz = int( erste_frequenz_in_Hz * frequenzverhaeltnis )
> 
> dauer_in_millisekunden = 400
> Beep( erste_frequenz_in_Hz, dauer_in_millisekunden )
> Beep( zweite_frequenz_in_Hz, dauer_in_millisekunden )
> 
> eingabe = input( "War dies eine Quinte (q) oder eine grosse Terz (t)? " )
> print( 'Es war', intervall * 'eine Quinte.' +( 1 - intervall )* 'eine Terz.'
> ) richtige_antwort = intervall * 'q' +( 1 - intervall )* 't'
> bewertung = isclose( 0, ord( eingabe )- ord( richtige_antwort ))
> print\
> ( 'Ihre Antwort war', bewertung * 'richtig.' +( 1 - bewertung )* 'falsch.' )

Wäre doch gelacht, wenn du deine Studenten nicht schon mit der ersten Lektion 
zur Verzweiflung bringst ;)


Mehr Informationen über die Mailingliste python-de