Seite 4 von 5
Verfasst: Montag 5. Oktober 2009, 16:43
von Hyperion
LP640 hat geschrieben:yo da stimm ich dir zu audax
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...
Verfasst: Montag 5. Oktober 2009, 16:56
von EyDu
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 ^^
Verfasst: Dienstag 6. Oktober 2009, 00:42
von 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
Verfasst: Dienstag 6. Oktober 2009, 05:49
von LP640
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
Verfasst: Dienstag 6. Oktober 2009, 19:23
von 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ß
Verfasst: Mittwoch 7. Oktober 2009, 05:50
von audax
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
Verfasst: Mittwoch 7. Oktober 2009, 14:09
von HWK
@problembär: Bei mir funktioniert es auch ohne den Timer einfach mit
Übrigens: Nette Idee mit SendKeys.
MfG
HWK
Verfasst: Mittwoch 7. Oktober 2009, 15:33
von LP640
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
mit einem jahr python-schulerfahrung glaube ich, muss man das auch nicht
trotzdem nochmals vielen dank
mfg
LP640
Verfasst: Mittwoch 7. Oktober 2009, 15:37
von LP640
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
Verfasst: Mittwoch 7. Oktober 2009, 15:45
von Dav1d
Code: Alles auswählen
>>> x = 1.2645343248
>>> round(x)
1.0
>>> round(x, 2)
1.26
Verfasst: Mittwoch 7. Oktober 2009, 15:53
von LP640
oh danke Dav1d
war doch nicht so schwer
mfg
LP640
Verfasst: Mittwoch 7. Oktober 2009, 16:00
von LP640
oh so ganz klappt das bei mir nicht
1 beispiel) funktioniert
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
Verfasst: Mittwoch 7. Oktober 2009, 16:39
von 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:
Gruß
Verfasst: Mittwoch 7. Oktober 2009, 17:18
von /me
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.
Verfasst: Mittwoch 7. Oktober 2009, 18:04
von Redprince
Verfasst: Donnerstag 8. Oktober 2009, 00:10
von 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
Verfasst: Donnerstag 8. Oktober 2009, 18:14
von 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ß
Verfasst: Sonntag 11. Oktober 2009, 10:47
von LP640
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:
damit gehen aber nur schon vorhandene mauszeiger
wie geht das mit nem selbst erstellten?
mfg
LP640
Verfasst: Sonntag 11. Oktober 2009, 10:51
von Leonidas
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.
Verfasst: Sonntag 11. Oktober 2009, 13:30
von 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.