AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Python] Rechnen mit "exec"?

Ein Thema von cruso · begonnen am 25. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
cruso
(Gast)

n/a Beiträge
 
#1

[Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 12:52
Hi,

ich benutze um in einem Python-Programm Terme zu berechnen u.a. folgende Codezeilen:

Code:
erg=0
exec 'erg='+term
Das funktioniert auch alles Prima. Nur wenn z.B. "10**10*10*10" eingegeben wird, dann ist diese Codezeile überfordert. Wie kann ich das Problem umgehen? Also besser: Wie kann ich das ausrechnen bzw. sagen, dass diese (und andere dieser Art) Berechnung nicht ausführbar ist?


MfG
Cruso
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 13:06
Was soll das heißen, "die Codezeile ist überfordert"?
Warum sollte man die nicht ausrechnen können?

Edit://

Code:
Python 2.4.4 (#2, Apr 16 2008, 17:58:59)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> erg = 0
>>> term = "10**10*10*10"
>>> exec 'erg='+term
>>> print erg
1000000000000
>>>
Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#3

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 13:09
Zitat von Valle:
Was soll das heißen, "die Codezeile ist überfordert"?
Warum sollte man die nicht ausrechnen können?

Mit freundlichen Grüßen,

Valle
Wenn du z.B. "10**10**10*10" mit der Codezeile berechnen lässt, dann wirst du sehen, dass das EWIG dauert! Ich möchte ja eigentlich nur wissen, wie man das umgehen kann, dass das Programm durch eine solche Eingabe so lange aufgehalten wird...
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 13:13


Code:
www-valle@ks360118:~$ time python -c "print 10**10*10*10"
1000000000000

real   0m0.007s
user   0m0.008s
sys    0m0.000s
www-valle@ks360118:~$
Dauert auf dieser Maschine 0.007 Sekunden.
Ist dir das zu langsam?

Naja, ich hab verstanden was du meinst. Da wird dir wohl nichts anderes übrig bleiben, als deinem Programm das überschlagen beizubringen. Du könntest auch einen kleinen Workaround machen: Während das Programm rechnet in einem Thread die Zeit mitzählen und nach 2 Sekunden Rechenzeit dem Benutzer irgendeine Statusmeldung ausgeben... Überschlagen wäre zwar besser, aber ob man das dem Programm so einfach beibringen kann weiß ich nicht.

Edit:// Ey? Oben hast du noch 10**10*10*10 geschrieben, jetzt aber plötzlich 10**10***10... Das ist unfair. *g* Stimmt aber, diese Rechnung dauert zu lange... Überschlagen! *g*

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#5

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 14:46
Naja, ist es nicht möglich das über einen bestimmten Datentyp zu machen? Und sobald der Maximalwert überschritten ist gibt es einen Fehler und den kann ich dann verarbeiten.

Valle: Btw: Man kann doch mit nur 13 Zeilen eine Nachricht an einen IRC-Channel schicken
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 15:05
Zitat von cruso:
Naja, ist es nicht möglich das über einen bestimmten Datentyp zu machen? Und sobald der Maximalwert überschritten ist gibt es einen Fehler und den kann ich dann verarbeiten.
Also spontan fällt mir da ein Modul namens decimal ein. Das hat glaube ich solche Features. Bin mir da aber nicht sicher, habe damit noch nicht wirklich gearbeitet.

Zitat von cruso:
Valle: Btw: Man kann doch mit nur 13 Zeilen eine Nachricht an einen IRC-Channel schicken
Schick mir die mal bitte per PM.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#7

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 15:11
Immer diese Modul-Leute ...
Ich wollte es eigentlich selbst machen. Und das mit dem Datentyp müsste gehen. In Delphi kann man ja auch nicht 10**10**10*10 mit Integer ausrechen ... Nur in Python weiß ich halt nicht wie das geht...

@Valle: Joa, vllt schick ich dir das... (hängt von der Beantwortung dieser Frage ab )


...
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#8

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 15:19
Zitat von cruso:
Immer diese Modul-Leute ...
Ich wollte es eigentlich selbst machen. Und das mit dem Datentyp müsste gehen. In Delphi kann man ja auch nicht 10**10**10*10 mit Integer ausrechen ... Nur in Python weiß ich halt nicht wie das geht...
In Python gibt es diese strikten Datentypen nicht. Ich kenne für Zahlen lediglich "int" und "float". Und wie wir ja mittlerweile herausgefunden haben, versuchen diese Datentypen tatsächlich das auszurechnen. Also müssen wir wohl auf einen anderen umsteigen. Ich kenne aber eben keinen anderen, außer diese decimal-Klasse.

Du sagst (wenn auch auch Spaß), dass du diese Module nicht magst. (So meine Interpretation ) Das ist eigentlich keine schlimme Einstellung, verstößt allerdings ziemlich hart gegen das Python-Prinzip. DRY = Don't repeat yourself. Die Module sind dazu da, dass man sie verwendet. Und das decimal-Modul ist bei jeder Python-Installation bereits dabei, was hält dich also davon ab es zu verwenden?

Zitat von cruso:
@Valle: Joa, vllt schick ich dir das... (hängt von der Beantwortung dieser Frage ab )
Das sag' ich meiner Mami.

Mit freundlichen Grüßen,

Valle

Edit:// Leichte Verwirrung beseitigt...
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#9

Re: [Python] Rechnen mit "exec"?

  Alt 25. Jun 2008, 19:16
Ach, das ist schon dabei? Mhm, dass ist natürlich etwas anderes! Dann werde ich das mal ausprobieren...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz