Seite 1 von 1
Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 12:10
von Kohtachan
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:
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:
Ist da ein Fehler im Buch oder habe ich irgend ein Zeichen übersehen?
Vielen Dank schonmal
Gruß Kohta
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 12:49
von __blackjack__
@Kohtachan: Geschweifte Klammern sind halt was anderes als runde Klammern. Im Buch steht korrekterweise im Text als auch im Quelltext „geschweifte Klammern“ beziehungsweise ``{ … }``.
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 12:52
von Kohtachan
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
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 13:54
von __blackjack__
@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.
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 14:18
von nezzcarth
__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.

Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 14:22
von Kohtachan
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
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 15:08
von Kohtachan
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

Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 15:14
von Jankie
Also ich habe mit der
Python Doku gelernt und fand die eigentlich ganz gut.
Re: Kleine Anfängerfrage
Verfasst: Donnerstag 19. September 2019, 20:05
von Kohtachan
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