Anfängerproblem, bzw. der Noob kann jetzt ein bisschen Python, hat aber keine Ahnung, was hinter den Kulissen stattfindet:
Ich habe vor einen zufällig generierten Array (code steht in array_zufall.py) sortieren zu lassen (code steht in sortier_algorithmen.py)
Also habe ich ganz naiv an den Anfang der Sortier-Datei "import array_zufall" bzw. "from array_zufall.py import zuf_liste" geschrieben und gemerkt, dass Python der Meinung ist, dass es "not a package" ist.
Ich habe mit os.chdir herumexperimentiert, etwas von sys.path gelesen, Fehlermeldungen von pylance erhalten und bin jetzt vollkommen verwirrt...
So sieht "sortier_algorithmen.py" aus:
Code: Alles auswählen
#Die Arbeitsumgebung wird hier festgelegt:
import os
print("Ursprünglich: ",os.getcwd()) # Get Current Working Directory
os.chdir("D:\Spielwiese") #Ändert das CWD
print("Geändert: ", os.getcwd())
from array_zufall.py import zuf_liste
print(zuf_liste(20))
#Probleme mit dem Importieren von array_zufall.py "is not a package"
#Wenn ich die Liste hier mal reinbekomme, schreibe ich hier die Sortieralgorithmen hin:
#Algo1
#Algo2
Code: Alles auswählen
import math as m
import random
# Eine (geordnete) Liste wird erzeugt und mit pop(i) ein zufälliges Element in ein neues Array geschrieben
# Initialisierung von zwei leeren Listen
def zuf_liste(anzahl):
geordnet = []
zufall = []
#anzahl = int(input("Wie lang soll das Zufallsarray werden? "))
#Erstellung der Ausgangsliste
for i in range(anzahl):
geordnet.append(i+1)
# print("Startliste: ",geordnet)
#Die Zufallsliste wird generiert
while len(geordnet)>0: #solange noch Zahlen da sind, mach...
#zufall.append(geordnet.pop(random.randint(0,len(geordnet)-1)))
# funktioniert - aber ist unleserlich, ich zoppel das auseinander:
actlen = len(geordnet) #Es wird geguckt, wie lang die Restliste ist
z = random.randint(0, actlen-1) #Zufallszahl z wird erzeugt, die Werte zwischen 0 und Länge-1 annehmen kann
nehme = geordnet.pop(z) #Das z-te Element aus meiner Liste wird genommen
gebe = nehme #Das Element wird jetzt übergeben
zufall.append(gebe) #An die Liste "zufall" wird das genommene Element gegeben
#print("Zufallsliste, alle Zahlen zwischen 1 und ",anzahl," sind genau einmal enthalten:")
#print(zufall)
return(zufall)
Wie kann ich meinem Python sagen, arbeite bitte nicht in c:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2032.0_x64_qbz...\Lib\site-packages (oder so ähnlich, sagt mir zumindest der "PathBrowser" von IDLE)
sondern in "D:\Spielwiese" macht mich schon die erste Fehlermeldung stutzig "Syntax Warning invalid escape sequence \S .."Stört der sich an Großbuchstaben?
Das Zufalls-Listen erzeugen klappt gut, aber wenn ich sortieren_algorithmen.py starte, bekomme ich folgenden Output:
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct 1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
Warning (from warnings module):
File "D:\Spielwiese\sortier_algorithmen.py", line 4
os.chdir("D:\Spielwiese") #Ändert das CWD
SyntaxWarning: invalid escape sequence '\S'
>>>
================= RESTART: D:\Spielwiese\sortier_algorithmen.py ================
Ursprünglich: D:\Spielwiese
Geändert: D:\Spielwiese
Traceback (most recent call last):
File "D:\Spielwiese\sortier_algorithmen.py", line 6, in <module>
from array_zufall.py import zuf_liste
ModuleNotFoundError: No module named 'array_zufall.py'; 'array_zufall' is not a package
Würde mich sehr freuen, wenn ich Links, Erklärungen, Videos oder irgendwas hilfreiches erfahre. Ich habe mich bei der Suche nach einer Lösung immer mehr der Tatsache stellen müssen, dass ich über die Vorgänge "hinter den Kulissen" eigentlich gar keine Ahnung habe...
Danke & liebe Grüße,
Alexander