ist is moeglich, dass bei einem input-befehl, nach der eingabe des 2. zeichens kein enter mehr benoetigt wird?
also dass ich nur eingeben muss z.B.:
54263635 und er mir das dann zerlegt in 54 26 36 35, mich aber jede 2 zeichen erneut fragt.
input automatisch bestaetigen
also man soll zu eingabe aufgefordert werden, jedoch ist diese soll diese nach dem 2ten zeichen selbst `enter` druecken.
klingt etwas bloed, zugegeben, ich kanns aber nicht besser formulieren.
bsp:
klingt etwas bloed, zugegeben, ich kanns aber nicht besser formulieren.
bsp:
- naechste zahl (warte): 56 OK
naechste zahl (warte): 98 OK
naechste zahl (warte): 75 OK
naechste zahl (warte): 05 OK
naechste zahl (warte): 12 OK
naechste zahl (warte): 6
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Probier mal (zumindest unter Unix, wo's msvcrt.getch() nicht gibt):
Das ganze funktioniert nur mit ungepuffertem stdin (deswegen die ganze tty und termios-Magie, die aber wie der Name schon sagt nur auf ein tty funktioniert, nicht auf eine Pipe oder ähnliches).
Code: Alles auswählen
import sys
import termios
import tty
old = termios.tcgetattr(sys.stdin.fileno())
tty.setraw(sys.stdin.fileno())
zahlen = []
while True:
sys.stdout.write("Bitte zwei Ziffern eingeben: ")
try:
zahlen.append(int(sys.stdin.read(2)))
except ValueError:
break
sys.stdout.write("%s OK\r\n" % zahlen[-1])
termios.tcsetattr(sys.stdin.fileno(),termios.TCSADRAIN,old)
sys.stdout.write(" Abgebrochen...\r\n")
print "Eingegeben:", zahlen
--- Heiko.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das fand ich recht witzig, deswegen noch eine Version mit msvcrt:
Ich denke, dass man es auch hätte schöner machen können, aber das demonstriert zumindest das Prinzip.
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import sys, msvcrt
def two_input():
print 'Press Enter to quit'
inputs = []
while True:
sys.stdout.write('Insert number: ')
ch1 = msvcrt.getch()
if ch1 == '\r':
sys.stdout.write('\n')
return inputs
sys.stdout.write(ch1)
ch2 = msvcrt.getch()
sys.stdout.write(ch2)
inputs.append(ch1)
inputs.append(ch2)
sys.stdout.write('\n')
def main():
stuff = ''.join(two_input())
print 'Wrote ', stuff
if __name__ == '__main__':
main()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sorry, dass ich das nochmal ausgrabe, aber bin jetzt erst dazu gekommen.
das 2. beispiel geht nicht. es gipt die ganze zeit nur aus, und es laesst sich auch nicht mehr abbrechen.
das 1. weiß ich nicht, konnte es noch nicht unter geeigneten bedingung testen.
mal dazu, fuer was ich das brauche.
ich hab hier zuhause nen 20 seiten wuerfel herumfliegen und wollte mal so schauen wie oft welche zahl vorkommt usw.
es ist durch das script natuerlich schon einfacher ne statistik aufzustellen, dennoch verbesserungsfaehig. ein ansatz waere dazu halt gewesen das enter nicht mehr druecken zu muessen.
der script sieht chaotisch aus, ich weiß, bin halt noch am anfang.
das 2. beispiel geht nicht. es gipt die ganze zeit nur aus, und es laesst sich auch nicht mehr abbrechen.
das 1. weiß ich nicht, konnte es noch nicht unter geeigneten bedingung testen.
mal dazu, fuer was ich das brauche.
ich hab hier zuhause nen 20 seiten wuerfel herumfliegen und wollte mal so schauen wie oft welche zahl vorkommt usw.
es ist durch das script natuerlich schon einfacher ne statistik aufzustellen, dennoch verbesserungsfaehig. ein ansatz waere dazu halt gewesen das enter nicht mehr druecken zu muessen.
der script sieht chaotisch aus, ich weiß, bin halt noch am anfang.
Code: Alles auswählen
# ------------------------------------------------------------------------------
def input_e():
liste = []
zaehler = 0
while True:
x = raw_input('naechste zahl: ') #Eingabe
try:
x = int(x) #Value Error, falls keine Eingabe
if x > 20: #Pruefe, ob X erlaubt ist, wenn nicht, neuer Versuch
print 'zahl groesser 20!'
continue
except ValueError:
if x == 'fertig': #Falls "fertig" eingegebn ist, Schleife beenden
break
if x == '': #Falls keine Eingabe: moeglichkeit neuer Versuch oder
frage = raw_input('fertig? (J/N): ') #Schleife zu beenden
if frage == 'N':
continue
else:
break
else: #Falls es keine Ausnahmen gab:
liste.append(x) #Fuege X zur liste hinzu
zaehler = zaehler + 1
print 'OK'
return zaehler, liste
#-------------------------------------------------------------------------------
#main:
zaehler, liste = input_e()
print ''
durchschnitt = 0
for nummer in range(0, zaehler):
print 'nummer %2d: %2d' % (nummer, liste[nummer]) #Gebe die Haeufigkeit
durchschnitt = durchschnitt + liste[nummer] #jeder Zahl aus und bilde die
#Summe aller Zahlen der Liste
print ''
durchschnitt = float(durchschnitt) / float(zaehler) #Errechne Durchschnitt
for nummer in range(1, 21): #Statistik fuer jede zahl
print 'nummer %2d: %2d abweichung: %2d sollte %2.3f mal vorkommen. %2.5f%%' % (nummer, liste.count(nummer), nummer, float(zaehler) / 20, float(liste.count(nummer)) * 100 / float(zaehler))
print "Durchschnitt:", durchschnitt
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Kennst Du Dich ein bisschen mit Statistik aus? Ich denke mal dass es darum ging zu testen ob der Würfel gezinkt ist oder nicht, dafür reichts aber nicht einfach nur die Differenzen zu den Erwartungswerten zu berechnen, sondern man muß mittels eines Konfidenzintervalles und zum Beispiel des Chi²-Tests rausfinden inwiefern die Hypothese dass der Würfel in Ordnung ist abzulehnen ist.
Ich kann mal schauen ob ich das irgendwo noch mal ausgraben kann; ich hab zumindest ein Buch darüber.
Ich kann mal schauen ob ich das irgendwo noch mal ausgraben kann; ich hab zumindest ein Buch darüber.
--- Heiko.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Doch, wenn dich Enter drücke beendet es sich ganz brav.lemmi hat geschrieben:das 2. beispiel geht nicht. es gipt die ganze zeit nur aus, und es laesst sich auch nicht mehr abbrechen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Schließe ich richtig daraus, dass ich, wenn ich plattformunabhängig sein will,
zuerst das Betriebssystem abfragen muss und danach dann entweder den einen oder den anderen Skript ausführen muss? Wäre sehr umständlich für eine kleine Hilfestellung!
zuerst das Betriebssystem abfragen muss und danach dann entweder den einen oder den anderen Skript ausführen muss? Wäre sehr umständlich für eine kleine Hilfestellung!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja.murph hat geschrieben:Schließe ich richtig daraus, dass ich, wenn ich plattformunabhängig sein will, zuerst das Betriebssystem abfragen muss und danach dann entweder den einen oder den anderen Skript ausführen muss?
Beschwer dich bei Microsoft, warum die nicht POSIX-Kompatibel sind oder bei den Entwicklern deiner libc warum sie die Funktionen der C-Runtime von Microsoft nicht bereitstellt.
Vielleicht kannst du es unter Linux auch mit curses versuchen, aber ich habe keine Lust das nun auszuprobieren, weil curses mich deprimiert
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wie kommst du darauf?
Meinst du wegen den Posts von modelnine&Leonidas?
Beide haben Module importiert die nunmal plattformabhängig sind.
Ein "normales" Pythonscript läuft aber, einmal gecodet, überall da wo ein
Python Interpeter installiert ist.
Meinst du wegen den Posts von modelnine&Leonidas?
Beide haben Module importiert die nunmal plattformabhängig sind.
Ein "normales" Pythonscript läuft aber, einmal gecodet, überall da wo ein
Python Interpeter installiert ist.
ubuntu linux !!
Wieso deprimiert dich curses?
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Hui. Eine gewagte These. Ich habe ein ganz normales Python-Skript geschrieben, genauso wie Leonidas, mit dem Unterschied, dass wir Funktionalität benutzen, die zwar von der Python-Stdlib gewrappt ist, aber nur unter einem bestimmten Systemtyp. In der Dokumentation ist genau dokumentiert wo/was/wie gebraucht/angeboten wird, dementsprechend muß man einfach da nachgucken, und eben "um die Inkompatibilitäten" rumprogrammieren. Das ist aber im Normalfall kein Problem.Ein "normales" Pythonscript läuft aber, einmal gecodet, überall da wo ein
Python Interpeter installiert ist.
--- Heiko.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil es grausig unpythonisch ist, weil es mein Terminal immer wenn es einen Fehler gibt zerschießt, weil nichts so funktioniert, wie man das gerne hätte, weil es umständlich ist, weil es sowieso nur unter Unices funktioniert...murph hat geschrieben:Wieso deprimiert dich curses?
Ist natürlich nur meine Meinung, YMMV.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich hielt es für erwiesen, dass die eine Methode Windows-, die andere Methode Linuxangepasst war. Durch diesen speziellen Zusammenhang dachte ich, dass es sehr wohl nicht zueinander kompatibel ist.
Oder benutzt Windows etwa tty?
Ich weiß, dass Python (eigentlich) Plattformunabhägig ist, deshalb habe ich ja auch diese Sprache als Zweitsprache gewählt (erste ist PHP)
Oder benutzt Windows etwa tty?
Ich weiß, dass Python (eigentlich) Plattformunabhägig ist, deshalb habe ich ja auch diese Sprache als Zweitsprache gewählt (erste ist PHP)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi murph!
Dort findest du eine Liste der eingebauten Python-Module:
http://www.python.org/doc/2.4.3/modindex.html
Falls ein Modul nur auf einem bestimmtes Betriebssystem funktioniert, steht das dabei. Das sind meistens spezielle Sachen, die es nur bei diesem Betriebssystem gibt.
Das Modul _winreg ist nur für Windows, weil nur Windows eine Registry hat. Das Modul NIS gibt es nur für UNIX/Linux weil das ein typisches Produkt für unixoide Systeme ist. Windows kann normalerweise mit so etwas nichts anfangen. Alles klar?
mfg
Gerold
Dort findest du eine Liste der eingebauten Python-Module:
http://www.python.org/doc/2.4.3/modindex.html
Falls ein Modul nur auf einem bestimmtes Betriebssystem funktioniert, steht das dabei. Das sind meistens spezielle Sachen, die es nur bei diesem Betriebssystem gibt.
Das Modul _winreg ist nur für Windows, weil nur Windows eine Registry hat. Das Modul NIS gibt es nur für UNIX/Linux weil das ein typisches Produkt für unixoide Systeme ist. Windows kann normalerweise mit so etwas nichts anfangen. Alles klar?
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich habe das Gefühl, dass wir aneinander vorbeireden.
Ich will (nicht alleine) ein automatisches "enter" nach x Zeichen.
Dieses sollte plattformunabhängig sein. Scheint es aber nicht zu sein.
Sehe ich das richtig?
@ichweissnicht:
in dem Moduleindex wird curses als plattformunabhägig angegeben.
@forummaster: Kann man einstellen, dass man beim Editieren auch die vorigen Posts sehen kann?
Ich will (nicht alleine) ein automatisches "enter" nach x Zeichen.
Dieses sollte plattformunabhängig sein. Scheint es aber nicht zu sein.
Sehe ich das richtig?
@ichweissnicht:
in dem Moduleindex wird curses als plattformunabhägig angegeben.
@forummaster: Kann man einstellen, dass man beim Editieren auch die vorigen Posts sehen kann?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
In etwa. Unter Linux gibt es den einen Weg, unter WIdnows den anderen. Aber du kannst beide Wege in einem Script verwenden und zur Luafzeit bestimmen, welchen Weg du gehst.murph hat geschrieben:Ich will (nicht alleine) ein automatisches "enter" nach x Zeichen.
Dieses sollte plattformunabhängig sein. Scheint es aber nicht zu sein.
Sehe ich das richtig?
murph hat geschrieben:in dem Moduleindex wird curses als plattformunabhägig angegeben.
Ergo: Linux und BSD.Curses Module Documentation hat geschrieben:While curses is most widely used in the Unix environment, versions are available for DOS, OS/2, and possibly other systems as well. This extension module is designed to match the API of ncurses, an open-source curses library hosted on Linux and the BSD variants of Unix.
Beim Antworten auf Threads? Ja, ist sogar schon eingestellt, ich sehe die vorherigen Antworten auf diesen Thread.murph hat geschrieben:@forummaster: Kann man einstellen, dass man beim Editieren auch die vorigen Posts sehen kann?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice