====== LU12.L02 - Hofladen ====== ===== Funktionen ===== def input_int(prompt): """ reads an integer input from the user :param text: the prompt to be shown :return: the integer number """ pass def input_float(prompt): """ reads a decimal number input from the user :param text: the prompt to be shown :return: the decimal number """ pass def find_article(list, name): """ finds an article in the article list :param list: the article list :param name: the article name to be found :return: article or None=not found """ pass ===== Vorgehensschritte ===== * Schritt 1 * Schritt 2 * Schritt 3 - Erstelle eine leere Liste für die Artikel - Eingabe des Artikelnamens - Solange Artikelname nicht ''Exit'' ist - Suche den Artikel in der Liste - Falls keine Artikel gefunden wurde - Erstelle ein neues Artikel-Objekt und speichere es in der Liste - Speichere den Artikelnamen - Eingabe des Preises - Sonst - Ausgabe des aktuellen Bestands - Eingabe der Menge - Addiere die Menge zum Bestand - Eingabe des Artikelnamens - Gib die Artikelliste als Returnwert zurück ===== Sourcecode ===== ==== article.py ==== from dataclasses import dataclass @dataclass class Article: """ an article in the farmshop """ name: str price: float stock: int if __name__ == '__main__': pass ==== shop.py ==== from article import Article def main(): article_list = [] article_name = input('Artikelname > ') while article_name != 'Exit': article = find_article(article_list, article_name) if article is None: article = Article(article_name, 0.0, 0) article_list.append(article) article.price = input_float('Preis > ') else: print('Bestand : ' + str(article.stock)) amount = input_float('Menge > ') article.stock = (article.stock + amount) article_name = input('Artikelname > ') return article_list def input_int(prompt): """ reads an integer input from the user :param text: the prompt to be shown :return: the integer number """ number = None while number is None: try: number = int(input(prompt)) except ValueError: print("Please, enter a whole number!") continue return number def input_float(prompt): """ reads a decimal number input from the user :param text: the prompt to be shown :return: the decimal number """ number = None while number is None: try: number = float(input(prompt)) except ValueError: print("Please, enter a real number!") continue return number def find_article(list, name): """ finds an article in the article list :param list: the article list :param name: the article name to be found :return: article or None=not found """ for article in list: if article.name == name: return article return None if __name__ == '__main__': main()