EXTREMES Problem HILFE!

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

LP640 hat geschrieben:yo da stimm ich dir zu audax :P
so sollte das net laufen
da fragt man was und naja nicht der rede wert
Du hast also immer noch nicht begriffen, was Du falsch gemacht hast? Es wurde iirc sogar ein Link zu den Netiquetten gepostet...
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hyperion hat geschrieben:Du hast also immer noch nicht begriffen, was Du falsch gemacht hast? Es wurde iirc sogar ein Link zu den Netiquetten gepostet...
Aber erst in der zweiten Antwort. Diese (Antwort) übersieht man auch schon einmal sehr leicht ^^
Das Leben ist wie ein Tennisball.
problembär

LP640's Umgangsformen finde ich ebenfalls ungenügend. Wie kann man nur gegen fast alles auf einmal verstoßen, was sich in Foren gehört?

Weil's mich in der Sache aber dennoch interessiert hat und ich die Frage an sich gar nicht so blöd finde, hier noch entsprechender Windows-Code, wobei man das seiner Python-Distribution entsprechende SendKeys-Binary (".exe") installieren muß / sollte:

Code: Alles auswählen

import SendKeys
import threading

def send(keys):
    SendKeys.SendKeys(keys,
                      pause = 0,
                      with_spaces = True,
                      with_tabs = True,
                      with_newlines = False,
                      turn_off_numlock = True)

wort = "Auto"

for i in range(10):
    t = threading.Timer(0.2, send, (wort,))
    t.start()
    wort = raw_input("Wort: ")
Viele Grüße
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

danke für die antwort problembär das ist genau das, was ich gesucht habe
allerdings tritt noch ein problem auf:
ich benötige das ganze eigentlich dafür, funktionen einzugeben aber wenn ich jetzt zum beispiel eingebe:
x**2 dann kommt da x((2 raus
oder x*2 --> x(2
oder x+1 ---> x!

kann man das irgendwie beheben???

mfg
LP640
problembär

Eine Lösung für dieses Problem sieht bei mir so aus:

Code: Alles auswählen

import SendKeys
import threading

def send(keys):

    repls = {"*" : "+",
             "/" : "7",
             "(" : "8",
             ")" : "9"}

    k = ""
    
    for i in keys:
        
        x = 0
        
        if i == "+":
            k += chr(29)
            continue
        
        for u in "^%~{}[]":
            if i == u:
                k += "{" + i + "}"
                x = 1
                break
        if x == 1:
            continue

        for u in repls.keys():
            if i == u:
                k += "+(" + repls[u] + ")"
                x = 1
                break
        if x == 1:
            continue

        k += i

    SendKeys.SendKeys(k,
                      pause = 0,
                      with_spaces = True,
                      with_tabs = True,
                      with_newlines = False,
                      turn_off_numlock = True)

wort = "Auto"

for i in range(10):
    t = threading.Timer(0.2, send, (wort,))
    t.start()
    wort = raw_input("Wort: ")
Aber erkläre mir doch bitte, warum es zu diesem Problem kommt.
Konfuzius sprach: "Wer nicht begeisterungsfähig ist, den unterrichte ich nicht. Wer nicht selbst nach Worten sucht, den leite ich nicht an. Wer mir nicht die restlichen drei Ecken zeigt, wenn ich eine Ecke aufgezeigt habe, den unterweise ich nicht weiter."
Gruß
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Das is ja wie in der Schule!!!
Wenn ich was selbst lernen wollte dann hätt ich mir doch das Tutorial angeschaut und mich selbst informiert bevor ich rumpöbel!!11
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

@problembär: Bei mir funktioniert es auch ohne den Timer einfach mit

Code: Alles auswählen

    send(wort)
    wort = raw_input("Wort: ")
Übrigens: Nette Idee mit SendKeys.
MfG
HWK
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

danke für eure hilfe
Aber erkläre mir doch bitte, warum es zu diesem Problem kommt.
ganz ehrlich ich hab mir das angeschaut aber keine ahnung wie das funktioniert :shock:
mit einem jahr python-schulerfahrung glaube ich, muss man das auch nicht :)

trotzdem nochmals vielen dank

mfg
LP640
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

so hab auch direkt wieder ne neue frage:
ich will eine zahl runden, jedoch hab ich net herausbekommen wie das geht
habs mit dem befehl round() versucht aber irgendwie nicht hinbekommen
wie kann ich zum beispiel die variable "x" mit dem wert "1.2645343248" (also x=1.2645343248) auf die zweite stelle hinterm komma runden???
kann mir jemand helfen???

mfg
LP640
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Code: Alles auswählen

>>> x = 1.2645343248
>>> round(x)
1.0
>>> round(x, 2)
1.26
the more they change the more they stay the same
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

oh danke Dav1d
war doch nicht so schwer :D

mfg
LP640
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

oh so ganz klappt das bei mir nicht

1 beispiel) funktioniert

Code: Alles auswählen

>>> x=1.2667434534545
>>> x=round(x,2)
>>> x
1.27
2 beispiel) funktioniert nicht richtig

Code: Alles auswählen

>>> x=1.4343243434
>>> x=round(x,2)
>>> x
1.4299999999999999
3 beispiel) funktioniert auch nicht richtig

Code: Alles auswählen

>>> x=1.34546776
>>> x=round(x,2)
>>> x
1.3500000000000001
wieso kommen da so viele 999999999 oder 0000000001 vor und wie kann man das beheben???

mfg
LP640
problembär

LP640 hat geschrieben:wieso kommen da so viele 999999999 oder 0000000001 vor
Hab ich auch nie richtig begriffen.
LP640 hat geschrieben:und wie kann man das beheben???
Meistens so:

Code: Alles auswählen

print "%.2f" % 1.4343598
Gruß
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

problembär hat geschrieben:
LP640 hat geschrieben:wieso kommen da so viele 999999999 oder 0000000001 vor
Hab ich auch nie richtig begriffen.
Unter http://de.wikipedia.org/wiki/Flie%C3%9F ... taltechnik findet sich eine Erklärung.
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

In der Doku auch!
I am not part of the allesburner. I am the [url=http://allesburner.de]allesburner[/url].
problembär

Erstmal danke für die weiteren Hinweise zur float-Präzision (kannte das sonst vor allem aus perlfaq4, dort auch zu Perl's "round()"; das Problem gibt's ja in allen Sprachen).

Noch zu der vorigen Frage (spätestens jetzt kommt man bei den vielen Fragen in einem Thread durcheinander):
HWK hat geschrieben:Übrigens: Nette Idee mit SendKeys.
Danke! Ist natürlich ganz übles Hacking ...

Aber mit dem "readline"-Modul (bzw. entsprechend "pyreadline" für Windows) hab' ich's nicht hinbekommen. Mit "readline.insert_text()" kann ich zwar Text in den Puffer von "raw_input()" (stdin) bekommen, aber er wird bei mir auch mit "readline.redisplay()" nicht angezeigt. Hatte da vielleicht jemand mehr Glück?

Viele Grüße
problembär

Unter Linux geht bei mir (doch) auch das:

Code: Alles auswählen

import readline
import threading

def send(a):
    readline.insert_text(a)
    readline.redisplay()

wort = "Auto"

for i in range(10):
    t = threading.Timer(0.2, send, (wort, ))
    t.start()
    wort = raw_input("Wort: ")
(Ohne Timer klappt das bei mir nicht.)

Unter Windows geht das so nicht, weil pyreadline keine ".redisplay()"-Methode bietet.

Gruß
Benutzeravatar
LP640
User
Beiträge: 142
Registriert: Dienstag 29. September 2009, 14:40

hi leute hab wieder ne neue frage
und zwar möchte ich, dass in dem xturtle fenster der mauszeiger als eine von mir zuvor erstellte gif datei zu sehen ist
ich kenne bisher nur den folgenden befehl:

Code: Alles auswählen

getcanvas().config(cursor="crosshair")
damit gehen aber nur schon vorhandene mauszeiger
wie geht das mit nem selbst erstellten?

mfg
LP640
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

LP640 hat geschrieben:hi leute hab wieder ne neue frage
Wenns eine neue Frage ist, dann stell sie in einem neuen Thread. Das ist nicht dein privater Support-Thread.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@problembär: Der Timer ist ein ziemlich schmutziger Trick, "readline.set_pre_input_hook()" ist die richtige Lösung. Sinnvollerweise strickt man daraus dann einen Kontextmanager.

Der Hintergrund ist, dass "readline.redisplay()" wohl nur funktioniert, wenn readline zur Anzeige bereit ist. Das ist irgendwann während des "raw_input()"-Aufrufs der Fall, nachdem der Prompt angezeigt wurde. Mit dem Timer landest Du mit Glück irgendwo in der Nähe dieses Zeitpunkts.
Antworten