N'abend allerseits
@ cybersys
Besten Dank für Deine Antwort - aber das gilt nicht. Denn: Wozu das return gut ist,
war ja genau so eine der Sachen, die erklärt werden sollten.
Warum Du die Länge des Ausgabestrings automatisch auf die Länge des Eingabestrings -
also hier gleich 3 - setzt, ist mir nicht klar. Mir gefällt's besser, wenn's variabel
bleibt.
Zu Deiner ersten Frage:
Angenommen, Du hast unter windows das Programm abgespeichert, dann solltest Du
irgendwo ein Bildchen von der niedlichen kleinen Schlange haben, das dieses
Programm repräsentiert.
Ändere im einfachsten Fall den code einmal folgendermaßen ab:
def R(s, n, p = '', z = 0):
if z == n: print p; return
for i in s: R(s, n, p + i, z + 1)
z = raw_input('zeichenkette eingeben:n')
i = int(raw_input('zahl eingeben:n'))
R(z, i)
e = raw_input('exit')
Wenn Du nun doppelclickst, sollte sich ein Fenster auftun, in dem in der ersten
Zeile "zeichenkette eingeben:" zu lesen steht.
Das tust Du bitte, gefolgt von einem munteren enter, und es erscheint "zahl eingeben:",
was Du bitte ebenfalls tust - wieder bestätigen.
Zum Beenden wieder entern - fertig.
War's das, was Du meinst ?
Wenn Du das Programm in PythonWin aufrufst, erhälst Du prompts, in die Du die
erforderlichen Angaben einträgst.
Zu Deiner Frage das Drucken betreffend:
Mal angenommen, Du hast win-extensions und PythonWin installiert,
mach doch mal folgendes:
import win32ui
k = []
def R(s, n, p = '', z = 0):
if z == n: k.append(p); return
for i in s: R(s, n, p + i, z + 1)
z = raw_input('zeichenkette eingeben:n')
i = int(raw_input('zahl eingeben:n'))
R(z, i)
print 'es wird gedruckt'
dr = win32ui.CreateDC()
dr.CreatePrinterDC()
dr.StartDoc('kombi')
dr.StartPage()
for i in range(len(k)):
print k[i]
dr.TextOut(100, 60 + i*60, k[i])
dr.EndPage()
dr.EndDoc()
e = raw_input('exit')
Das ist bloß ein rudimentäres Beispiel.
Zum genaueren Nachguggen schau mal hier:
http://www.python.org/windows/pythonwin/
@schwarznase
Was heißt schon feine englische Art ? pfhhhhhh....
Was ich meinte: Wenn Du bereits 9(!) Stunden dran gewerkelt hast,
wäre es doch immerhin möglich gewesen, daß Dir in der 10ten die
Erleuchtung gekommen wäre.
Ein schönes Beispiel ist das mit dem Eierkochen:
Nimm mal an, Du willst ein paar Eier kochen, und brauchst dazu -
na was wohl ? - kochendes Wasser. Wenn Du nun Deinen Topf alle
zwo Minuten von der Kochplatte ziehst, wird das Wasser nie kochen,
und Deine Eier werden nächste Ostern noch nicht hart sein.
Hättest Du aber nur ein bissel mehr Geduld gehabt, und den Topf
gelassen, wo er hingehört (auf der heissen Herdplatte nämlich),
hättest Du ziemlich bald was im Bauch gehabt. Comprende ?
Und zwar stimmt es, daß return irgendetwas zurückgibt, aber es
tut noch etwas wesentlich wichtigeres - nämlich was ?
gruß
matho