Seite 1 von 2

if und raw_input

Verfasst: Sonntag 16. September 2007, 15:21
von Agroschim
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

Verfasst: Sonntag 16. September 2007, 15:37
von BlackVivi
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...

Verfasst: Sonntag 16. September 2007, 15:38
von CrackPod
Hallo,

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

LG Tobsl

Verfasst: Sonntag 16. September 2007, 15:45
von Agroschim
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

Verfasst: Sonntag 16. September 2007, 15:58
von BlackVivi
Ö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...

Verfasst: Sonntag 16. September 2007, 16:01
von rayo
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

Verfasst: Sonntag 16. September 2007, 16:09
von Agroschim
Er liefert mir ja einen Syntax-Error, das verstehe ich nicht und zwar beim Doppelpunkt.

AHHH! Danke!

Verfasst: Sonntag 16. September 2007, 16:11
von 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.

Verfasst: Sonntag 16. September 2007, 16:12
von BlackVivi
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.

Verfasst: Sonntag 16. September 2007, 16:23
von Agroschim
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 ;)

Verfasst: Sonntag 16. September 2007, 16:30
von BlackVivi
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?

Verfasst: Sonntag 16. September 2007, 16:35
von Leonidas
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 ;)

Verfasst: Sonntag 16. September 2007, 16:36
von Agroschim
An anderer Stelle ist es kommentiert...

Verfasst: Sonntag 16. September 2007, 16:40
von Leonidas
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.

Verfasst: Sonntag 16. September 2007, 16:40
von BlackVivi
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. ._.

Verfasst: Sonntag 16. September 2007, 17:04
von Agroschim
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?

Verfasst: Sonntag 16. September 2007, 17:15
von 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.

Verfasst: Sonntag 16. September 2007, 17:21
von Agroschim
Auch 'ne Variante, jetzt ist es hier:

http://www.python-forum.de/topic-11982.html

Verfasst: Sonntag 16. September 2007, 18:01
von Leonidas
Agroschim hat geschrieben:Auch 'ne Variante, jetzt ist es hier:

http://www.python-forum.de/topic-11982.html
Und wurde nun ins LodgeIt ausgelagert.

Verfasst: Sonntag 16. September 2007, 18:50
von birkenfeld
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.