Can't import image?

Hallo,

ich erstelle gerade einen kleinen Algorithmus, bei dem man ein Bild einfügt, welches dann anhand der Stärke der Pixel in Graustufen eingeteilt wird und dann das Bild in einer anderen Art ausgibt.

Ich nutze zum Lesen der Bilder das PIL-Modul.

Ich bin eigentlich schon fast fertig, aber da kommt die Fehlermeldung, dass das Modul etwas nicht importieren kann.

Schaut es euch selbst an:

Microsoft Windows [Version 10.0.19043.1237]
(c) Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\User\AppData\Local\Programs\Algoritmika\vscode\data\extensions\algoritmika.algopython-20211015.95910.0\temp>C:/Users/User/AppData/Local/Programs/Algoritmika/algovenv/Scripts/activate.bat
(algovenv) C:\Users\User\AppData\Local\Programs\Algoritmika\vscode\data\extensions\algoritmika.algopython-20211015.95910.0\temp>cd c:/Users/User/OneDrive/Dokumente/Soundaufnahmen
(algovenv) c:\Users\User\OneDrive\Dokumente\Soundaufnahmen>C:/Users/User/AppData/Local/Programs/Algoritmika/algovenv/Scripts/python.exe c:/Users/User/OneDrive/Dokumente/Soundaufnahmen/test.py
Traceback (most recent call last):
 File "c:/Users/User/OneDrive/Dokumente/Soundaufnahmen/test.py", line 1, in <module>
  from PIL import image
ImportError: cannot import name 'image' from 'PIL' (C:\Users\User\AppData\Local\Programs\Algoritmika\algovenv\lib\site-packages\PIL\__init__.py)
(algovenv) c:\Users\User\OneDrive\Dokumente\Soundaufnahmen>

Falls ihr auch Fehler beim Code seht, könnt ihr es mir auch gern mitteilen, da ich noch ziemlich neu bin.

Computer, Technik, Programm, programmieren, Image, Informatik, Python, Technologie, Algorithmus
Python: Kleinsten Wert mit dem größten Wert innerhalb einer Liste tauschen?

Ich habe folgende Methode:

def tausche_wertung(bester_Termin):
       bester_Termin[min], bester_Termin[max] = bester_Termin[max], bester_Termin[min]
       return bester_Termin

Dabei ist "bester_Termin" ein Ergebnis aus einem folgendem Code, der also immer unterschiedlich ausfällt (gearbeitet wurde mit datetime):

print("Bitte geben Sie die Namen oder Bezeichnungen der Mitglieder ein, die zum Treffen kommen sollen (Anmerkung: mit Komma getrennt)")
mitglieder = [name.strip() for name in input().split(",")]

print("Bitte geben Sie die mögliche Termine ein (Anmerkung: mit Komma getrennt und im Format TT.MM.JJJJ)")
termine = [[datetime.strptime(datum.strip(),"%d.%m.%Y"),0] for datum in input().split(",")]


for mitglied in mitglieder:
   for termin in termine:
       termin[1] += int(input(f"Wie gut passt {termin[0]:%A, der %d.%m.%Y} für {mitglied}? (0 = passt gut, 1= passt mäßig, 2 = passt schlecht oder beispielsweise in Noten): "))
   print()

# Den Durchschnitt aller Termine auflisten.
print("Durchschnitt pro Termin:")
for termin in termine:
   print(f"{termin[0]:%A, der %d.%m.%Y}: {termin[1]/len(mitglieder):.2f}")

# Den best-passendsten Termin raussuchen. Anmerkung: Wenn es mehrmals den gleichen Durchschnitt gibt, wird der früheste Termin ausgeben.
bester_Termin = min(termine, key=lambda termin:termin[1])

Als beispiel-print kommt folgendesheraus:

[datetime.datetime(3, 1, 1, 0, 0), 3]

In diesem Fall, war der dritte Termin der beste und die 1 war die kleinste Eingabe der 1. Person für irgendeinen Termin, die zweite 1 war die kleinste Eingabe der 4. Person, wieder für irgendeinen Termin und die beiden 0en waren von Person 2. und 3. schon für den dritten Termin eingeben und automatisch der kleinste Wert.

Die Liste wird also von Groß zu Klein aufgelisten sehe ich das richtig? Denn die vorliegende Liste wäre hier quasi [Person1., Person 4., Person 2., Person 3.] und nicht von 1-4 aufwärts?

Ausgabe:

Mein Ziel ist es erstmal die Werte für den besten Termin nur mit einer anderen Eingabe zu tauschen, wenn nicht bereits die kleinste Wertung für den Termin vorliegt. Das ist hier ja bereits gegeben, wenn ich es richtig sehe, denn die beiden 0en bleiben gleich.

Anschließend will ich, dass das Programm ausgibt wie oft ein Wechsel der Bewertung möglich ist, d.h. wenn es bereits die kleinste bzw. beste Wertung ist (0 ist hier die beste) wird nicht getauscht, ebenso wenn es nicht möglich ist, da alle Wertungen gleich waren o.ä.

Und dann soll das Programm, wenn möglich, noch ausgeben bei welchem Mitglied getauscht wurde, in diesem Fall bei Person 1.

Erläuterung Anhand Beispiel:

Mittwoch, der 01.01.0003 Termin ist der passendste, und Person 1 hat da eine 2, welche man mit der 1 der Wertung des ersten Termins tauschen kann.

Wunschprint: Es ist ein Wechsel der Bewertung möglich, und das bei Person 1

oder noch besser aber kein Zwang, wenn es zu kompliziert ist:

Es ist der Wechsel der Wertung des 3. mit der des 1. Termins bei Person 1 möglich.
Bild zum Beitrag
Computer, programmieren, Informatik
JavaScript 2 forEach Schleifen?

Hi,

ich bin dabei mein eigenes Schachspiel als Webseite zu programmieren. Ich hänge aber leider gerade beim spawnen der Figuren fest. Ich will diese ja so kompakt wie möglich im Code formulieren.

Die Frage ist jetzt beim letzten Bild. Warum kann ich keine 2 for each schleifen so wie im bild durchlaufen lassen. es kommt das hier als fehler

Ich will in der ersten for each alle 6 objekte nacheinander aufrufen, dann jeweils pro durchlauf soll zu z.b den bauern alle 16 positionen auf dem schachfeld belegt werden. ich hoffe jemand kann mir helfen.

Hier nochmal die wichtigsten teile des codes als text:

function Figur(name, position, bild)

{

    this.Name = name;

    this.Position = position;

    this.Bild = bild;

    this.Bewegen = bewegen;

}

var f_namen = ["bauer","springer","laeufer","turm","dame","koenig"];

var bauer = new Figur("bauer", ["1_2","2_2","3_2","4_2","5_2","6_2","7_2","8_2","1_7","2_7","3_7","4_7","5_7","6_7","7_7","8_7"], "Media/Bilder/Schachfiguren/Bauer.png");

var springer = new Figur("springer", ["2_1","7_1","2_8","7_8"], "Media/Bilder/Schachfiguren/Springer.png");

var laeufer = new Figur("laeufer", ["3_1","6_1","3_8","6_8"], "Media/Bilder/Schachfiguren/Läufer.png");

var turm = new Figur("turm", ["1_1","8_1","1_8","8_8"], "Media/Bilder/Schachfiguren/Turm.png");

var dame = new Figur("dame", ["4_1","4_8"], "Media/Bilder/Schachfiguren/Dame.png");

var koenig = new Figur("koenig", ["5_1","5_8"], "Media/Bilder/Schachfiguren/König.png");

function spielstart()

{

    //Alle Felder leeren

    $(".figur").remove();

    //Figurenzähler auf 1

    f_nummer = 1;

    //Figuren spawnen

    f_namen.forEach(element_name => {

        element_name.Position.forEach(element => {

            $("<div/>",{

                id: koenig.Name + "_" + f_nummer,

                class: "figur",

                "height" : "100px"

            }).appendTo("#feld_" + element);

           

            $("<img/>",{

                class: "l_bild",

                "src" : koenig.Bild

            }).appendTo("#koenig_" + f_nummer);

            f_nummer++;

        });

    });

}

Bild zum Beitrag
Computer, HTML, programmieren, JavaScript, JQuery, Spiele und Gaming
tracert - Befehl zeigt "Zeitüberschreitung der Anforderung an"?

Habe ein Problem, und zwar handelt es sich um einen Serververbindung die ich mittels "tracert"-Befehl in der CMD über Administrator überprüfen möchte, jedoch zeigt er mir an bestimmten Hops einfach "Zeitüberschreitung der Anforderung" an.

Bei dem Server handelt es sich um folgenden (178.162.217.65). Dies ist der europäische Server von Hunt:Showdown.

Komischerweise, wenn ein Kollege das gleiche Prozedere versucht, gelingt es ihm über 10-12 Hops eine Pingzeit an verschiedene Adressen herauszufinden, hingegen zu mir.

Habe an meinem PC schon das Antivirenprogramm (Kaspersky) deinstalliert sowie die Windows-Firewall deaktiviert, um zu überprüfen ob es an dem liegen sollte...

Weiters ist zu erwähnen, dass das Internet ungewöhnliche Pingschwankungen aufweist, die ich nicht nachvollziehen kann, jedoch NUR über meinen Windows-PC (Lan-Verbindung) - über WLAN auf meinem Smartphone merke ich diese Schwankungen garnicht, daher gehe ich langsam davon aus, dass mein PC irgendwelche Probleme macht, die ich mir aber nicht mehr erklären kann.

Hier die tracert Anfrage:

Bei einem Ping-Anfrage auf den gleichen Server erhalte ich diese Antwort, sieht doch sehr solide aus.

Jedoch wirft es mich bei dem Spiel, ohne jegliche Vorwarnung aus dem Spiel, indem ich einfach einfriere und mich anschließend die Verbindung trennt.

Bild zum Beitrag
Computer, Internet, Microsoft, Technik, programmieren, Gaming, Technologie, Windows 10, CMD Befehl, Spiele und Gaming
C# Werte aus vererbten Objekten in ArrayList aufrufen?

Guten Tag,

ich bin neu in C# und versuche gerade eine kleine Klasse zum üben zu erstellen, jedoch bin ich auf ein Problem gestoßen, bei dem ich keine Ahnung habe. Ich versuche gerade von objekten, die in einer ArrayList sind, Werte zu entziehen (per selbsterstellter ToString()), aber ich kann dies leider irgendwie nicht. Es kann auch sein, dass das anders ist als in Java.

Ich versuche halt es so wie in Java zu machen, nähmlich: ArrayList[i].ToString() , bekomme aber nichts raus.

            public classes(int hp, String name, int def, int atk)
            {
                this.name = name;
                this.hp = hp;
                this.def = def;
                this.atk = atk;
            }

                        public void setHp(int hp)
            {
                this.hp = hp;
            }
            public void setDef(int def)
            {
                this.def = def;
            }


            public int getHp() 
            {
                return hp;
            }
            public int getAtk()
            {
                return atk;
            }




            public abstract String ToString();


            public abstract void print();


        }
        class Attacker :classes
        {
            public int critrate = 15;
            public int critdmg = 50;
            public int piercing = 0;
            public int hp = 0;
            public int def = 0;
            public int atk = 0;
            public String name = "Guest";


            public Attacker(int hp, int def, int atk, String name, int critrate, int critdmg, int piercing) : base(hp, name, atk, def)
            {
                this.hp = hp;
                this.def = def;
                this.atk = atk;
                this.name = name;
                this.piercing = piercing;
                this.critdmg = critdmg;
                this.critrate = critrate;
            }
            public override void print()
            {
                Console.WriteLine(ToString());
            }
            public override string ToString()
            {
                return "Username: " + name + "\nHp: " + hp + "\nDefense: " + def + "\nDamage: " + atk
                    + "\nPiercechance: " + piercing + "%\nCritdmg: " + critdmg + "\nCritrate: " + critrate + "%"
                    ;
            }


        }


        static void Main(string[] args)
        {
            Attacker d = new Attacker(50, 20, 10, "d", 10, 15, 0);
            Attacker e = new Attacker(100, 30, 5, "e", 2, 3, 2);
            Attacker f = new Attacker(1000, 1, 0, "f", 0, 0, 0);
            Attacker g = new Attacker(2, 0, 100, "g", 20, 200, 10);


            Monsters.Add(d);
            Monsters.Add(e);
            Monsters.Add(f);
            Monsters.Add(g);




            Monsters.ToString();

Ich hab das dann zu Monsters.ToString() umgeändert, jedoch kein Erfolg.

Danke im Vorraus

programmieren, C Sharp
Fehler in Visual Studio Code?

Hallo,

ich habe versucht dieses Video nachzuarbeiten: https://www.youtube.com/watch?v=N1_7ahk_oms

Nun bin ich schon bei ich glaube ca. min 18 angelangt, jedoch nachdem ich meine % Angaben hinter das # geschrieben habe und dann per node index.js generieren möchte,

erscheint dieser Fehler:

(node:6776) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, scandir 'C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update/layers/Eyeball/'

at Object.readdirSync (fs.js:1047:3)

at getElements (C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update\src\main.js:56:6)

at C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update\src\main.js:73:15

at Array.map (<anonymous>)

at layersSetup (C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update\src\main.js:70:30)

at startCreating (C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update\src\main.js:188:20)

at Object.<anonymous> (C:\Users\justu\Documents\NFT Kroko\hashlips_art_engine-1.0.2_update\hashlips_art_engine-1.0.2_update\index.js:6:3)

at Module._compile (internal/modules/cjs/loader.js:1085:14)

at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)

(Use `node --trace-warnings ...` to show where the warning was created)

(node:6776) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)

(node:6776) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not

Hoffentlich könnt ihr mir helfen :)

Bild zum Beitrag
Computer, programmieren, Visual Studio, Visual Studio Code, NFT

Meistgelesene Beiträge zum Thema Programmieren