Python Code testen
Ich habe einen Python code geschrieben und würde mich über ehrliche tester freuen
import os
#os.system('cls' if os.name == 'nt' else 'clear')
liste = []
def addToClipBoard(text):
with open("temp_clipboard.txt", "w", encoding="utf-8") as f:
f.write(text)
os.system("type temp_clipboard.txt | clip")
os.remove("temp_clipboard.txt")
def hinzufügen():
produkt = input("Welches Produkt möchten sie hinzufügen ")
anzahl = int(input(f"Wie oft möchten sie {produkt} kaufen "))
add = [str(produkt), str(anzahl)]
liste.append(add)
def anzeigen():
for i in range(0, len(liste)):
print(liste[i][0], liste[i][1])
def entfernen():
print("Welches Produkt möchten sie entfernen ")
for i in range(0, len(liste)):
print(f"{i + 1}: ",liste[i][0], liste[i][1])
auswahl = int(input("")) - 1
os.system('cls' if os.name == 'nt' else 'clear')
print("Produkt wurde entfernt!")
del liste[auswahl]
while True:
auswahl = int(input("1: Produkt hinzufügen \n2: Produkt entfernen \n3: Liste anzeigen \n4: Liste leeren \n5: Liste kopieren\n"))
os.system('cls' if os.name == 'nt' else 'clear')
if auswahl == 1:
try:
hinzufügen()
except ValueError:
print("Fehler!")
continue
elif auswahl == 2:
try:
entfernen()
except IndexError:
print("Fehler!")
continue
elif auswahl == 3:
anzeigen()
if liste == []:
print("Deine Einkaufsliste ist leer")
continue
elif auswahl == 4:
liste = []
print("Liste wurde geleert!")
elif auswahl == 5:
outlist = str(liste)
outlist = "\n".join([f"{produkt}: {anzahl}" for produkt, anzahl in liste])
print("Liste wurde in die Zwischenablage kopiert")
addToClipBoard(str(outlist))
Schreibt gerne eure meinung und startet das Programm im Terminal
2 Antworten
Nur mal so am Rande:
def anzeigen():
for i in range(0, len(liste)):
print(liste[i][0], liste[i][1])
ist nicht, wie man das machen sollte oder würde.
def anzeigen():
for i in liste:
print(i[0], i[1])
und man würde wohl auch lieber zu nem f-String oder ähnlichem greifen.
Bitte keine if-elif-Tiraden, structural matching ist Dein Freund.
Zu Umlauten bei Funktionsbezeichnern wurde bereits etwas gesagt.
Was zum Henker soll das hier darstellen?:
def addToClipBoard(text):
with open("temp_clipboard.txt", "w", encoding="utf-8") as f:
f.write(text)
os.system("type temp_clipboard.txt | clip")
os.remove("temp_clipboard.txt")
Pipe das doch direkt in den Zielprozess, falls es keien bessere Option geben sollte.
usw. usf.
Ergönzend:
for i in range(0, len(liste)):
print(f"{i + 1}: ",liste[i][0], liste[i][1])
besser:
for i,v in enum(liste):
print(f'{i+1}: {v[0]}, {v[1]}')
Weil das je nach Kodierung der Datei, der Platform und der Interpreterversion zu Problemen führen kann.
Bei Python ist das nicht ganz so gravierend, da viele die Referenzimplementierung nutzen.
Ich würde in jedem Fall sicherheitshalber nochmal in die Spezifikation schauen.
https://docs.python.org/3/reference/lexical_analysis.html#identifiers
Naja ich hatte jetzt kb das alles durchzulesen aber eine Funktion mit umlauten im Namen zu haben ist schon echt Crazy
Aber warum sollte man keine umlaute in Funktionen verwenden