Seite 1 von 1

Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 19:20
von andie39
Moin,

nach langer Zeit habe ich mich mal wieder mit Python geschäftigt und möchte mir einen eBay Rechnung mit Zusätzen der auf mich zugeschnitten ist entwerfen.
Aktuell bin ich nur bei einem Zwischenschritt, aber ich teste immer wieder einmal und habe nun eine Fehlermeldung bei der mir nicht klar ist, was das Problem ist.
Das Programm ist so natürlich noch gar nicht fertig und weitere Dinge werden noch eingebaut:

Hier der Code:

Code: Alles auswählen

import math


def calculator(eBay_category, sales_price, purchasing_price):
    shipping_costs = float(5.00)
    ebay_fee = float()
    ebay_provision = float()
    if eBay_category == 1 and sales_price <= 990.00:
        ebay_fee = 11
    elif eBay_category == 1 and sales_price > 990.00:
        ebay_fee = 2
    elif eBay_category == 2 and sales_price < 200.00:
        ebay_fee = 12
    elif eBay_category == 2 and sales_price > 200.00:
        ebay_fee = 2

    ebay_provision = sales_price - (sales_price / 100 * ebay_fee) + 0.35
    net_sales = (sales_price / 1.19) - ebay_provision - shipping_costs
    return net_sales


eBay_category = int()
shipping_costs = float()
sales_price = float()
purchasing_price = float()

print("""Kostenkalkulator für eBay und Webseiten

Wählen Sie Ihre eBay Verkaufskategorie""")

eBay_category = input("Drücke (1) für Bootssport\nDrücke (2) für Gartentechnick")

sales_price = input("Geben Sie den eBay Verkaufspreis inkl. MwSt und Versand ein")
purchasing_price = input("Geben Sie Ihren Netteo-Einkaufspreis ein")

result = calculator(eBay_category, sales_price, purchasing_price)

print(f"Der Nettoverkaufspreis ist {result} €")
 
 
Hier der Fehler der genannt wird:

"raceback (most recent call last):
File "C:/Users/info/PycharmProjects/pythonProject1/main.py", line 36, in <module>
result = calculator(eBay_category, sales_price, purchasing_price)
File "C:/Users/info/PycharmProjects/pythonProject1/main.py", line 17, in calculator
ebay_provision = sales_price - (sales_price / 100 * ebay_fee) + 0.35
TypeError: unsupported operand type(s) for /: 'str' and 'int'!

Was übersehe ich hier?

ebay_provision = sales_price - (sales_price / 100 * ebay_fee) + 0.35
/ ist doch die Anweisung für eine Division und sales_price, 100 und andere variablen sind doch Integer oder Float Zahlen, da ist doch kein String.
Warum also: unsupported operand type(s) for /: 'str' and 'int'!

Re: Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 19:49
von sparrow
Es ist absolut unüblich Variablen mit ihrem Typ zu initialisieren. Das ist unnötig, mach das nicht. Offensichtlich verwirt das nur.
Diese ganz ... = int() und ... float() können weg.
`x = float(5.2)` ist identisch zu `x = 5.2`. Da kann das float() also auch weg.

Und dann rätst du hier , dass das alles ints und floats sind. Geprüft hast du das nicht.
Und da input() eine Zeichenkette zurück gibt, bin ich mir ziemlich sicher, dass sales_price _kein_ int oder float ist.

Re: Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 19:58
von andie39
sparrow hat geschrieben: Donnerstag 30. März 2023, 19:49 Es ist absolut unüblich Variablen mit ihrem Typ zu initialisieren. Das ist unnötig, mach das nicht. Offensichtlich verwirt das nur.
Diese ganz ... = int() und ... float() können weg.
`x = float(5.2)` ist identisch zu `x = 5.2`. Da kann das float() also auch weg.

Und dann rätst du hier , dass das alles ints und floats sind. Geprüft hast du das nicht.
Und da input() eine Zeichenkette zurück gibt, bin ich mir ziemlich sicher, dass sales_price _kein_ int oder float ist.
Ah. Hab nachgeschaut nach dem Hinweis:
input gibt Strings aus, hatte ich nicht mehr auf dem Schirm.

Dann komme ich weiter denke ich. Danke

Nachtrag: Hat geklappt:

sales_price = int(input("Geben Sie den eBay Verkaufspreis inkl. MwSt und Versand ein"))

Eine Kleinigkeit an der ich doch gestolpert bin.

Re: Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 20:16
von Sirius3
Man definiert keine Variablen auf Vorrat. Das macht nur Probleme und führt zu schwer zu finde Fehlern. Ist eBay_category nicht 1 oder 2 oder ist sales_price = 200 dann sind ebay_fee und ebay_provision 0 und Du merkst es nichtmal, dass net_sales falsch berechnet werden.
Statt Bedingung und umgekehrte Bedingung explizit zu schreiben, benutzt man else, dann passieren auch so Fehler wie bei sales_price = 200 nicht.

Code: Alles auswählen

def calculator(ebay_category, sales_price, purchasing_price):
    shipping_costs = 5.00
    if ebay_category == 1:
        ebay_fee = 11 if sales_price <= 990.00 else 2
    elif ebay_category == 2:
        ebay_fee = 12 if sales_price <= 200.00 else 2
    else:
        raise ValueError("wrong ebay_category")

    ebay_provision = sales_price - (sales_price / 100 * ebay_fee) + 0.35
    net_sales = (sales_price / 1.19) - ebay_provision - shipping_costs
    return net_sales

Re: Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 20:23
von geraldfo
Für Geldbeträge sollte man den Typ Decimal verwenden.

LG Gerald

Re: Code-Problem mit einem Kalkulator

Verfasst: Donnerstag 30. März 2023, 20:29
von andie39
Die Fehlermeldung wäre auch noch gekommen. Wie gesagt ist noch nicht fertig ich hatte nur eine Zwischentest und hatte das genannte Problem.