Seite 1 von 1

g.write

Verfasst: Sonntag 13. Juni 2010, 11:02
von coma85
hallöchen...

also ich schreibe gerade an einem programm, wobei ich die eingaben durch g.write
in einer output-datei speichere...

hier mal ein beispiel:

Code: Alles auswählen

schongespielt = raw_input("Hast du bereits zuvor schon einmal Roulette gespielt?: ")
g.write('Roulette gespielt?: ' + schongespielt + '\n')
print ''

besitz = 100
print "Dein Besitz zu Beginn: ", besitz

ende = "n"

while ende !="j":

    einsatz = input("Dein Einsatz bitte: ")
    besitz = besitz - einsatz
    
    print ('\n'+'Wie willst du spielen?')
    print "A - für schwarz oder rot"
    print "B - für gerade oder ungerade"
    print "C - für niedrig oder hoch"
    print "D - für eine Zahl"+'\n'
    spielart = raw_input("Auswahl: ")
    g.write('Spielart: ' + spielart + '\n')
jetzt wollte ich auch ein g.write bei der Eingabe vom 'Einsatz' haben,
aber da zeigt er mir immer eine fehlermeldung...

woran liegt das??

ich tippe ja, dass es an der fehlenden raw_input angabe liegt, aber wie kann ich das ändern??

LG

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:09
von Rebecca
Was fuer eine Fehlermeldung? Was ist g? (Der gepostete Code kann auch ohne Zeile zwei nicht funktionieren.)

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:13
von coma85
also g definiere ich am anfang des programms mit: g = open("output.txt","w")
und am ende des programms schließt es mit: g.close()

es zeigt mir folgendes als fehler, wenn ich schreibe:

Code: Alles auswählen

 einsatz = input("Dein Einsatz bitte: ")
 g.write('Einsatz: ' + einsatz + '\n')
 besitz = besitz - einsatz   
fehlermeldung:

Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\...pyw", line 27, in <module>
g.write('Einsatz: ' + einsatz + '\n')
TypeError: cannot concatenate 'str' and 'int' objects

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:20
von EyDu
Dann lass dir mal die Typen von "Einsatz: " und einsatz ausgeben.

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:30
von coma85
was meinst du damit?

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:32
von /me
coma85 hat geschrieben:was meinst du damit?
type()

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 11:49
von derdon
Hier ein etwas anderer Code, der die gleiche Fehlermeldung hervorruft:

Code: Alles auswählen

>>> 'hallo welt' + 42
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:00
von coma85
also ich habe jetzt mal

Code: Alles auswählen

    type('Einsatz')
    type(einsatz)

    print type
da gibt er mir aus: <type 'type'>

hm... hilft mir nicht so sehr... weiß immernoch nicht, was ich da ändern muss,
damit er mir den "Einsatz" in der output-datei speichert...

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:02
von derdon
Die Zeilen sollten so lauten:

Code: Alles auswählen

print type('Einsatz')
print type(einsatz)

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:07
von coma85
achso alles klar... str und int

also müsste ich meine eingangsdefintion

Code: Alles auswählen

def zufall():
    return int(anzahl*random.random())
ändern?

oder ist da eine doppelbelegung mit int und str nicht möglich?

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:14
von Rebecca
coma85 hat geschrieben:also müsste ich meine eingangsdefintion

Code: Alles auswählen

def zufall():
    return int(anzahl*random.random())
ändern?
Wo auch immer der Code jetzt herkommt, der hat doch mit deiner Fehlermeldung, die du oben gepostet hast, ueberhaupt nichts zu tun! Schau dir doch mal die Zeile an, auf die die Fehlermeldung verweist (und auch den Post von derdon).

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:25
von coma85
ich weiß ja wo der fehler liegt... bei g.write('Einsatz: ' + einsatz + '\n')

ist mir ja klar... und ich weiß auch, dass es scheinbar daran liegt, dass
ich 2 operatoren verwende (int, str)

aber warum hat es dann bei den raw_input anweisungen funktioniert?

und was kann ich machen, dass es funktioniert :K

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 12:42
von derdon
Wandle einsatz in einen String um, bevor du ihn mit den anderen Strings verbindest. Oder besser: benutze string-formatting (google -> "python string-formatting").

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 15:09
von coma85
hab mir dazu jetzt mal nen paar foren angesehen und hilfsdateien...
nur bei der umsetzung haperts...

hab es jetzt so geschrieben

Code: Alles auswählen

    einsatz = input("Dein Einsatz bitte: {einsatz}".format(einsatz))
    g.write('Einsatz: ' + einsatz + '\n')
    besitz = besitz - einsatz
er zeigt mir den fehler:

Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\....pyw", line 27, in <module>
einsatz = input("Dein Einsatz bitte: {einsatz}".format(einsatz))
KeyError: 'einsatz'


ich krieg ne meise... es will nicht funktionieren...
ich hab das mit dem string formatting noch nie gemacht und hab
sicher nen simplen denkfehler... kann mir jemand sagen, welchen?

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 15:32
von DaMutz
entweder du machste es so:

Code: Alles auswählen

"Dein Einsatz bitte: {einsatz}".format(**locals())
oder so (das Keyword musst du zuordnen):

Code: Alles auswählen

"Dein Einsatz bitte: {einsatz}".format(einsatz=einsatz)
oder ohne Keyword:

Code: Alles auswählen

"Dein Einsatz bitte: {0}".format(einsatz)

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 15:43
von EyDu
Das bringt aber auch nichts, da "einsatz" noch gar nicht existiert.

@coma85: Du möchtest die Formatierung in der write-Zeile benutzen, nicht beim input.

Re: g.write

Verfasst: Sonntag 13. Juni 2010, 15:52
von coma85
jawoll...es funktioniert... dankeschön für die hilfe :-)

ps: habs in die write-anweisung gepackt