Seite 1 von 1
Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 10:03
von mkeil
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
Re: Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 10:16
von .robert
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)
Re: Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 10:21
von EyDu
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
Re: Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 11:11
von BlackJack
Mal unter der Annahme, dass der Name `rand` nach dem "if" nicht mehr von interesse ist/war und ungetestet:
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)
`add()`, `mul()`, … sind aus dem `operator`-Modul
Re: Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 11:12
von sma
Und warum nicht beide Ansätze kombinieren?
Code: Alles auswählen
from random import choice
from operator import add, sub, mul, div
choice((add, sub, mul, div))(42, 23)
Stefan
Re: Längere if-Anweisung optimieren
Verfasst: Dienstag 8. März 2011, 20:49
von mkeil
Danke für Eure Antworten!
Vielleicht warte ich dann doch noch etwas, die Lösungen verstehe ich (noch) nicht.
Bin ja noch ziemlich am Anfang
Marcel
Re: Längere if-Anweisung optimieren
Verfasst: Mittwoch 9. März 2011, 13:34
von Nebelhom
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?
Re: Längere if-Anweisung optimieren
Verfasst: Mittwoch 9. März 2011, 13:36
von EyDu
Das sind einfach nur Beispielzahlen um dir auch noch etwas Code zu überlassen

Am besten befragst du Google einmal nach 42.