if und raw_input

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
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Hallo!
Ich bin absoluter Python Neuling und frage mich, warum folgendes nicht geht bzw. wie ich es geschickt lösen kann:

Code: Alles auswählen

if str(raw_input('War dies die letzte Eingabe? (ja/nein)')) == 'ja':
	break
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Warum funktioniert dies nicht?... Post' mal den gesamten Quelltext.

Code: Alles auswählen

if str(raw_input('War dies die letzte Eingabe? (ja/nein)')) == 'ja':
    print "test"
Funktioniert beispielsweise super...
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

wieso sollte es nicht funktionieren?
Ansonsten: str(raw_input()) is doppelt gemoppelt. raw_input() liefert standardmäßig Strings zurück.

LG Tobsl
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Das ist der ganze Code (das Programm poste ich lieber nicht :D )

Code: Alles auswählen

while True:
	s.append([raw_input('x-Wert Pos.'),raw_input('y-Wert Pos.')])
	v.append([raw_input('x-Wert Geschw.'),raw_input('y-Wert Geschw.')])
	m.append(raw_input('Masse:')
	if raw_input('War dies die letzte Eingabe? (ja/nein)') == 'ja':
		break
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Öhm, und was geht nicht?...

Code: Alles auswählen

while True:
    if raw_input('War dies die letzte Eingabe? (ja/nein)') == 'ja':
        break
Schließt die Endlosschleife erfolgreich, bei der eingabe von "ja"...

(Außerdem sieht's ein bissel komisch aus mit den ganzen raw_inputs, könntest das vllt übersichtlicher lösen indem du eins nach dem anderen machst...)

Achja, ich seh grad... du hast bei

Code: Alles auswählen

m.append(raw_input('Masse:')
die schließende Klammer vergessen.

Code: Alles auswählen

while True: 
    s.append([raw_input('x-Wert Pos.'),raw_input('y-Wert Pos.')]) 
    v.append([raw_input('x-Wert Geschw.'),raw_input('y-Wert Geschw.')]) 
    m.append(raw_input('Masse:'))
    if raw_input('War dies die letzte Eingabe? (ja/nein)') == 'ja': 
        break
So is's richtig...
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Könnte es sein dass bei gewissen Konsolen raw_input noch ein \n mitliefert?
Dann würde raw_input('letzte Eingabe').strip() == 'ja' das gewünschte ergeben. Vielleicht gleich noch .lower() damit man au Ja und JA schreiben kann.

Code: Alles auswählen

while True:
    if raw_input('War dies die letzte Eingabe? (ja/nein)').strip().lower() == 'ja':
        break
Gruss
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Er liefert mir ja einen Syntax-Error, das verstehe ich nicht und zwar beim Doppelpunkt.

AHHH! Danke!
BlackJack

Sprechendere Bezeichner wären nicht schlecht. `s`, `v` und `m` sind ziemlich nichtssagend.

Ausserdem sieht der Quelltext so aus, als wenn die Objekte an den gleichen Indexen in den drei Listen jeweils zusammen gehören. Da sollte man die Informationen in der Regel auch zusammen in *einer* Liste speichern.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Agroschim hat geschrieben:Er liefert mir ja einen Syntax-Error, das verstehe ich nicht und zwar beim Doppelpunkt.

AHHH! Danke!
Früher hat' mir geholfen bei einem Syntax Error alles auszukommentieren, was in Frage kommen könnte... So kann man es schonmal auf eine Reihe reduzieren. Und dann anschließend zu schauen, worand es liegen könnte, meistens sind's eckige oder runde Klammern.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

BlackJack hat geschrieben:Sprechendere Bezeichner wären nicht schlecht. `s`, `v` und `m` sind ziemlich nichtssagend.
s = Ort
v = Geschwindigkeit
m = Masse

Für Physiker mehr als bezeichnend ;)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Agroschim hat geschrieben:
BlackJack hat geschrieben:Sprechendere Bezeichner wären nicht schlecht. `s`, `v` und `m` sind ziemlich nichtssagend.
s = Ort
v = Geschwindigkeit
m = Masse

Für Physiker mehr als bezeichnend ;)
Und für den Informatiker total kryptisch. Es ist nicht wichtig ob du es verstehst, die paar Minuten um

locat
spd
mass

dürften doch wohl drin sein, oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackVivi hat geschrieben:locat
spd
mass
Local cat? Sozialdemokratische Partei Deutschlands? Gratuliere, kryptische Bezeichner durch noch kryptischere ersetzt, mit denen jetzt auch Physiker nichts mehr anfangen können.

Nein, wenn schon dann ``location`` und ``speed`` (oder ``velocity``) oder im Physiker-Slang bleiben ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

An anderer Stelle ist es kommentiert...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Agroschim hat geschrieben:An anderer Stelle ist es kommentiert...
Letztens wurde auch wieder darüber diskutiert. Aber wenn die Variablennamen selbsterklärend und daher selbstdokumentierend sind, warum dann darauf verzichten. So muss man nachschlagen was die Variablen sollen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Leonidas hat geschrieben:
BlackVivi hat geschrieben:locat
spd
mass
Local cat? Sozialdemokratische Partei Deutschlands? Gratuliere, kryptische Bezeichner durch noch kryptischere ersetzt, mit denen jetzt auch Physiker nichts mehr anfangen können.

Nein, wenn schon dann ``location`` und ``speed`` (oder ``velocity``) oder im Physiker-Slang bleiben ;)
War auch nur'n Beispiel ._. Bei locat hab ich ja selbst ein biss'l geschmunzelt, aber spd find ich gar nicht so kryptisch. ._.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Wenn dann position statt location, immerhin hat der Massepunkt einen fest definierten Ort und ist nicht in der Küche oder so... Statt speed müsste es auch velocity heißen, da hier ein Vektor gemeint ist. Für Physiker reichen meine Bezeichungen jedoch und da sie nichts mit dem Problem zu tun haben. warum umschreiben?

PS: Gibt es eine Möglichkeit für Dateianhäng oder muss ich wertvolle Bytes von meinem Speicher opfern, um den Quelltext komplett hochzuladen?
BlackJack

Quelltexte kannst Du am besten hier hochladen und dann einen Link posten: http://paste.pocoo.org/

Nicht vergessen "Python" auszuwählen, damit das Syntaxhighlighting stimmt.
Benutzeravatar
Agroschim
User
Beiträge: 28
Registriert: Sonntag 16. September 2007, 15:19

Auch 'ne Variante, jetzt ist es hier:

http://www.python-forum.de/topic-11982.html
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Agroschim hat geschrieben:Auch 'ne Variante, jetzt ist es hier:

http://www.python-forum.de/topic-11982.html
Und wurde nun ins LodgeIt ausgelagert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Agroschim hat geschrieben:Wenn dann position statt location, immerhin hat der Massepunkt einen fest definierten Ort und ist nicht in der Küche oder so... Statt speed müsste es auch velocity heißen, da hier ein Vektor gemeint ist. Für Physiker reichen meine Bezeichungen jedoch und da sie nichts mit dem Problem zu tun haben. warum umschreiben?
Da muss ich dir allerdings voll rechtgeben.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten