Rechentrainer programmieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stretization
User
Beiträge: 6
Registriert: Freitag 19. April 2019, 19:47

Hallo Zusammen,

wir müssen vom Studium aus einen Rechentrainer programmieren, welcher zufällig Aufgaben zu den vier Grundrechenarten (+, - , • , ÷) stellt.
Was Python angeht bin ich ein absoluter Anfänger. Den Rechentrainer habe ich so gut wie fertig programmiert und er läuft auch schon.
Nur habe ich folgendes Problem. Die Zahlen für die Rechenaufgaben werden immer zufällig ausgewählt (hier benutze ich random.randint(0,20)).
Bei der Division ist aber die Bedingung, dass nur 'saubere' Zahlen rauskommen, d.h. Zahlen die auch tatsächlich durcheinander teilbar sind.

Gibt es eine Möglichkeit, eine Bedingung bzw. einen Befehl einzubauen, dass im Falle einer Division nur durcheinander teilbare Zahlen zufällig ausgewählt werden ?

Eine weitere Frage wäre noch, ob es einen Befehl gibt, dass wenn eine bestimmter Fall eintritt das Programm in der While-Schleife wieder auf einen bestimmten Punkt zurück Springt ? Bei der Subtraktion sollen nämlich die Null und negative Zahlen nicht als Ergebnis vorkommen. Meine Idee war den Trainer so zu programmieren, dass falls die Zahl2 größer oder gleich Zahl1 ist, die beiden Zahlen neu belegt werden, so lange bis Zahl1 größer als Zahl2 ist und erst dann eine Aufgabe gestellt wird.

Ich hoffe es ist relativ verständlich, obwohl ich ein aufgeschmissener Anfänger bin :lol:
Vielen Dank im voraus für Lösungsvorschläge :D
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn du nur ganze Zahlen vom Ergebnis her willst, dann erzeuge doch einfach das Ergebnis per Zufall. Und stelle als Aufgabe das Ergebnis der Multiplikation.

Und eine while Schleife ist schon das Mittel der Wahl. Nur das du nicht “zurück springst”. Sondern einfach so lange darin verbleibst, bis deine Bedingung erfüllt ist.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@stretization: Bei der Subtraktion kannst Du doch auch ohne Wiederholungen gleich passende Werte erstellen. Zum Beispiel in dem Du die Werte einfach sortierst, so dass der Grössere der Beiden immer der erste Operand ist.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
stretization
User
Beiträge: 6
Registriert: Freitag 19. April 2019, 19:47

__deets__ hat geschrieben: Freitag 19. April 2019, 20:25 Wenn du nur ganze Zahlen vom Ergebnis her willst, dann erzeuge doch einfach das Ergebnis per Zufall. Und stelle als Aufgabe das Ergebnis der Multiplikation.

Und eine while Schleife ist schon das Mittel der Wahl. Nur das du nicht “zurück springst”. Sondern einfach so lange darin verbleibst, bis deine Bedingung erfüllt ist.
Stimmt, das kann ich tatsächlich so machen! Alles klar, vielen Dank :D
stretization
User
Beiträge: 6
Registriert: Freitag 19. April 2019, 19:47

__blackjack__ hat geschrieben: Freitag 19. April 2019, 21:10 @stretization: Bei der Subtraktion kannst Du doch auch ohne Wiederholungen gleich passende Werte erstellen. Zum Beispiel in dem Du die Werte einfach sortierst, so dass der Grössere der Beiden immer der erste Operand ist.
Ja das habe ich schon versucht, nur ist eben das Problem, dass es nur solange funktioniert bis die beiden Zufallswerte zufällig gleich groß sind. Dann bringt auch sortieren nichts mehr und das Ergebnis ist 0, was aber nicht sein soll weil die 0 als Eingabe durch den Anwender das Ende der Schleife bedeutet. ;)
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann hast du zwei Möglichkeiten: entweder wie schon erwähnt bis zur Erfüllung der Randbedingungen per while weiter Ergebnisse rechnen.

Oder in diesem recht seltenen Fall einfach 1 auf einen der Summanden addieren.
Antworten