sprünge?

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.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 15:20

hallo,

mache meine ersten Schritte mit Python:

in BASIC hieß die Zeile:
30 .....
40 IF j = 1 THEN GOTO 50 ELSE GOTO 102
50 ....


wobei 40, 50 und 102 die Zeilennummern sind, wie kann ich das einfach in python machen, nach welchem Stichwort sollte ich suchen? Habe leider nix gefunden.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Dienstag 27. November 2007, 15:25

Hallo,
sowas gibts nicht, und das ist gut so.
Das prinzipielle verhalten erreichst du mit if .. then .. else
Hier mal ein kleines beispiel mit 2 Funktionen.


Code: Alles auswählen

def my_function1():
    print "f1"

def my_function2():
    print "f2"


if j == 10:
    my_function1()
else:
    my_function2()
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 27. November 2007, 15:26

Hallo mathi!

Willkommen im Python-Forum!

Python ist zum Glück nicht BASIC!!! :D Es gibt keine Zeilennummerierung.

Es ist wohl besser, du liest dir zuerst eines der vielen Python-Tutorials durch. Fange am Besten damit an: http://starship.python.net/crew/gherman ... -de-21.pdf

Und dann habe ich hier http://halvar.at/python/links/ noch ein paar Links zu Python-Seiten.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Dakre
User
Beiträge: 16
Registriert: Dienstag 13. Juni 2006, 22:40

Dienstag 27. November 2007, 15:27

goto gibt es zwar immernoch (zumindest in C), aber es ist eher üblich in Assembler...

in modernen Sprachen werden die Fälle in eigene Blöcke (in Python Einrückungen) gekapselt:

Code: Alles auswählen

...
if j = 1:
    # hier wird das behandelt, was passieren soll, wenn j = 1 ist
    print "j hat den Wert 1"
else:
    # hier passiert das, was bei dir in Zeile 102 stünde, sofern es ein echtes else ist
    print "j hat nicht den Wert 1"
...
falls du möchtest, dass der Code ab Zeile 102 in beiden Fällen ausgeführt wird, lässt du den else Block einfach weg:

Code: Alles auswählen

...
if j = 1:
    # hier wird das behandelt, was passieren soll, wenn j = 1 ist
    print "j hat den Wert 1"


# hier passiert das, was bei dir in Zeile 102 stünde, sofern dieser Code in beiden Fällen ausgeführt wird
print "j hat nicht den Wert 1"
...
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 15:37

vielen Dank für die Hinweise,
das prinzip von if und else kenne ich.

ich werde mich nochmal mit
def my_funktion():

auseinandersetzen. :oops:
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 15:41

letzte Frage: ich möchte eigendlich erstmal nur kleine rechenprogramme erstellen:

BASIC: f=x^(2/3)

Python: f=x**(2/3) gibt einen fehler, aber f=x**0.66667 ist mir zu ungenau, was ist mein denkfehler?
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 27. November 2007, 15:42

Mad-Marty hat geschrieben:sowas gibts nicht, und das ist gut so.
Sprünge oder gotos? Denn break, continue und Exceptions sind schon recht nützlich.
EyDu
User
Beiträge: 4871
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dienstag 27. November 2007, 15:45

Lies dir doch erst mal das Tutorial durch, da klärt sich die Frage.
Dakre
User
Beiträge: 16
Registriert: Dienstag 13. Juni 2006, 22:40

Dienstag 27. November 2007, 15:47

mathi hat geschrieben:letzte Frage: ich möchte eigendlich erstmal nur kleine rechenprogramme erstellen:

BASIC: f=x^(2/3)

Python: f=x**(2/3) gibt einen fehler, aber f=x**0.66667 ist mir zu ungenau, was ist mein denkfehler?
das gibt einen Fehler? bei mir kommt da 1 raus... denn 2/3 = 0.6667, aber als Integer ist es 0... und x**0 ist 1... versuch es mal mit f=x**(2/3.0) um Python zu sagen, dass es sich nicht um Integer, sondern um floats handelt...
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 15:53

vielen Dank damit komm ich jetzt weiter. :)
BlackJack

Dienstag 27. November 2007, 16:08

Oder am Anfang des Quelltextes ``from __future__ import division`` schreiben, dann ergibt ``2 / 3`` auch eine Flieskommazahlen. Für Ganzzahldivision muss man dann ``2 // 3`` schreiben.
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 16:12

ha, das ist super, da ich nur mit floats arbeite :-)
BlackJack

Dienstag 27. November 2007, 16:20

So wie CBM BASIC, dass im Grunde auch nur Fliesskommazahlen kennt? :-)
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Dienstag 27. November 2007, 16:23

ja :lol:
mathi
User
Beiträge: 314
Registriert: Dienstag 27. November 2007, 14:30

Mittwoch 28. November 2007, 08:57

noch eine Frage:
ich habe einige if-else schleifen hintereinander,

jetzt möchte ich am Ende noch die Frage anfügen: nochmal rechnen? dafür brauche ich ja "for", aber muß ich jetzt wirklich die 30 Zeilen die ich schon geschrieben habe händisch einrücken um die blöcke zu definieren:

for i=1:
..if m=5:
............a=3
..else:
............a=4
for i=2:
..if m=5:
.
.
.
oder gibt es einen automatismus? ich stelle mir das beim nachträglichen einfügen in ein größeres programm mühselig vor!
Zuletzt geändert von mathi am Mittwoch 28. November 2007, 09:19, insgesamt 1-mal geändert.
Antworten