Kleine Anfängerfrage

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.
Antworten
Kohtachan
User
Beiträge: 6
Registriert: Donnerstag 19. September 2019, 11:57

Hallo liebe Forengemeinde,

ich beschäftige mich seit mehreren Jahren mit dem Raspberry-Pi und möchte mich nun endlich auch mal Python widmen.
Ich habe mir zum Lernen dieses Buch geholt: https://bmu-verlag.de/books/python/

Die ersten Kapitel sind recht verständlich, aber nun hänge ich bei dem Punkt Dictionary fest. Im Buch steht Folgendes:

Bild

Ich habe den Befehl also im Python Interpreter wie folgt eingegeben:

Code: Alles auswählen

fahrzeug1 = ("marke": "VW", "modell": "Golf", "baujahr": 2012, "preis": 5000)
Der Code lässt sich aber nicht ausführen. Ich bekomme immer folgende Fehlermeldung bei der Ausführung:

Code: Alles auswählen

SyntaxError: invalid syntax
Ist da ein Fehler im Buch oder habe ich irgend ein Zeichen übersehen?

Vielen Dank schonmal

Gruß Kohta
Benutzeravatar
__blackjack__
User
Beiträge: 10274
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Kohtachan: Geschweifte Klammern sind halt was anderes als runde Klammern. Im Buch steht korrekterweise im Text als auch im Quelltext „geschweifte Klammern“ beziehungsweise ``{ … }``.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.”
— Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
Kohtachan
User
Beiträge: 6
Registriert: Donnerstag 19. September 2019, 11:57

Oh okay, da habe ich zu sehr auf das Beispiel geschaut und das als runde Klammern erkannt. Dann hast du natürlich recht, so steht es auch im Text. Ich danke dir, für die schnelle Hilfe.

Lieben Gruß Kohta
Benutzeravatar
__blackjack__
User
Beiträge: 10274
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Kohtachan: Man kann auf der Webseite den Quelltext zum Buch bekommen (das wird einem dann als PDF(!) per E-Mail zugeschickt) und ich würde damit nicht lernen wollen. Bei den Autos führt das dann zu so etwas:

Code: Alles auswählen

class Auto:
  """
  Erstellt das Objekt Auto für einen Gebrauchtwagenhändler.
  """ 
  def __init__(self, ma, mo, bj, pr):
    """
    Initialisiert ein neues Objekt Auto
    Argumente:
    *	Marke (string): Marke des Gebrauchtwagens
    *	Modell (string): Modell des Gebrauchtwagens
    *	Baujahr (int): Baujahr des Fahrzeugs
    *	Preis (int): Angestrebter Verkaufspreis
    """
    self.__Marke = ma 
    self.__Modell = mo 
    self.__Baujahr = bj 
    self.__Preis = pr

  def getMarke(self):
    """
    Gibt die Marke des Autos zurück.
    """ 
    return self.__Marke
  
  def getModell(self):
    """
    Gibt das Modell des Autos zurück.
    """ 
    return self.__Modell
  
  def getBaujahr(self):
    """
    Gibt das Baujahr des Autos zurück.
    """ 
    return self.__Baujahr
  
  def getPreis(self):
    """
    Gibt den Preis des Autos zurück.
    """ 
    return self.__Preis 
  
  def setPreis(self, preis_neu): 
    """
    Ändert den Preis des Autos
    """
    if abs(self.__Preis - preis_neu) < self.__Preis * 0.05:
      self.__Preis = preis_neu 
    else:
      print("Die Abweichung zum vorherigen Preis ist sehr groß.") 
      bestaetigung = input("Soll %d als neuer Preis"%preis_neu +
      "festgelegt werden?(ja/nein)") 
      if bestaetigung == "ja":
        self.__Preis = preis_neu
        
auto1 = Auto("VW","Golf",2011, 5000)
auto2 = Auto("Renault","Clio",2013, 6000) 
auto3 = Auto("Porsche","Panamera",2014, 25000)
wert = eval(input("Geben Sie den neuen Preis ein: "))
auto1.setPreis(wert) 
print ("Neuer Preis:",auto1.getPreis())
Das ist kein idiomatisches Python! Nicht nachmachen!

Der Autor mag anscheinend auch nicht nur keine Python-Konventionen (Style Guide for Python Code) sondern ist in seinem eigenen Code auch extrem inkonsequent und was Leerzeichensetzung angeht würde ich sogar sagen recht schlampig. Ob nach Kommas, zwischen Funktionen/Methoden und den runden Klammern zum Aufruf, oder um Gleicheitszeichen bei Schlüsselwortargumenten Leerzeichen gesetzt sind oder nicht, scheint der Zufall zu entscheiden.

`eval()` kommt 24 in den Codebeispielen vor — das sollte genau 0 mal vorkommen.

39 Namen mit angehängter Nummer, wobei ein paar sogar sinnlos eine Nummer angehängt haben, weil es den Namen nur einmal gibt. Dabei kommt es auch vor das in solchen Fällen die Nummer nicht 1 ist!

Bei Tk wird natürlich `place()` verwendet. Was man natürlich *nicht* machen sollte.

Es gibt auch Code der syntaktisch falsch ist. Ich würde ja von einem Buchautoren erwarten, dass der seine Beispiele automatisiert testet und sie *mindestens* am Compiler vorbei kommen.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.”
— Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
nezzcarth
User
Beiträge: 1410
Registriert: Samstag 16. April 2011, 12:47

__blackjack__ hat geschrieben: Donnerstag 19. September 2019, 13:54 Es gibt auch Code der syntaktisch falsch ist. Ich würde ja von einem Buchautoren erwarten, dass der seine Beispiele automatisiert testet und sie *mindestens* am Compiler vorbei kommen.
Es gibt halt Bücher, die sind zum verkaufen und nicht zum lesen gedacht. ;)
Kohtachan
User
Beiträge: 6
Registriert: Donnerstag 19. September 2019, 11:57

Das ist jetzt natürlich etwas ernüchternd. Ich hatte länger nach einem guten Buch für Einsteiger gesucht und das war von den Bewertungen her sehr gut gewesen. Sehr nett, dass du dir die Mühe gemacht hast, mal darüber zu schauen. Dann kann ich mir ja schon Fehlverhalten direkt vermeiden.

Hättest du denn vielleicht für mich eine Alternative Literatur, die du empfehlen kannst und für Einsteiger verständlich ist?

Vielen Dank schonmal dafür

Gruß Kohta
Kohtachan
User
Beiträge: 6
Registriert: Donnerstag 19. September 2019, 11:57

Kohtachan hat geschrieben: Donnerstag 19. September 2019, 14:22 Hättest du denn vielleicht für mich eine Alternative Literatur, die du empfehlen kannst und für Einsteiger verständlich ist?
Achso, wenn möglich in deutscher Sprache :D
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Also ich habe mit der Python Doku gelernt und fand die eigentlich ganz gut.
Kohtachan
User
Beiträge: 6
Registriert: Donnerstag 19. September 2019, 11:57

Ich konnte das Buch glücklicherweise noch zurückgeben. Dann schaue ich mir mal deinen Link an Jankie und arbeite mich mal da durch.

Gruß Kohta
Antworten