Hallo,
wie könnte ich folgende Anweisung optimieren: http://www.python-forum.de/pastebin.php?mode=view&s=165
Ich finde das alles.. sehr lang, geht bestimmt auch kürzer. Je nach Operator sollen andere Werte für eine Aufgabe genutzt werden.
Aber ich denke der Code erklärt sich von selbst, ich bin ja noch ein blutiger Anfänger und er ist nicht so kompliziert
Grüße
mkeil
Längere if-Anweisung optimieren
nur mal so als Inspiration:
Code: Alles auswählen
import random
from operator import add, sub, mul, div
op = (add, sub, mul, div)[random.randint(0,3)]
print op(37,15)
Oder um Indizes aus dem Weg zu gehen:
Code: Alles auswählen
>>> import operator
>>> import random
>>> spam = {"+":operator.add, "-":operator.sub, "*":operator.mul, "/":operator.div}
>>> spam[random.choice("+-*/")](42.0, 23.0)
1.826086956521739
>>> spam[random.choice("+-*/")](42.0, 23.0)
966.0
>>> spam[random.choice("+-*/")](42.0, 23.0)
19.0
>>> spam[random.choice("+-*/")](42.0, 23.0)
1.826086956521739
>>> spam[random.choice("+-*/")](42.0, 23.0)
966.0
>>> spam[random.choice("+-*/")](42.0, 23.0)
65.0
Das Leben ist wie ein Tennisball.
Mal unter der Annahme, dass der Name `rand` nach dem "if" nicht mehr von interesse ist/war und ungetestet:
`add()`, `mul()`, … sind aus dem `operator`-Modul
Code: Alles auswählen
operations = [
('+', add, (1, 20), (1, 20)),
('-', sub, (20, 40), (1, 20)),
('/', div, (11,20), (1, 10)),
('*', mul, (1, 10), (1, 10)),
]
# ...
op, func, a_range, b_range = random.choice(operations)
a = random.randint(*a_range)
b = random.randint(*b_range)
c = func(a, b)
Und warum nicht beide Ansätze kombinieren?
Stefan
Code: Alles auswählen
from random import choice
from operator import add, sub, mul, div
choice((add, sub, mul, div))(42, 23)
Ich fuehle mich gerade unheimlich doof. Wie kommt ihr von dem urspruenglich angegeben code im pastebin mit den verschiedenen zahlen intervallen fuer die random.randint methode zu den zahlen (42, 23)?
Steh ich gerade spektakulaer auf dem Schlauch oder ist das hoehere Mathematik fuer jemanden ohne Abschluss in Mathematik oder Informatik?
Steh ich gerade spektakulaer auf dem Schlauch oder ist das hoehere Mathematik fuer jemanden ohne Abschluss in Mathematik oder Informatik?