Wie kann man ein weitverzweigtes Geflecht aus if/else-Anweisungen in Python (oder in anderen Programmiersprachen) programmieren?

Wenn man als absoluter Laie in Programmierung im Internet zur if/else-Anweisung (egal, in welcher Programmiersprache) recherchiert, wird man schnell feststellen, dass die Infos, die man hier findet, nicht allzu reichhaltig sind.

Das höchste der Gefühle, was einem beigebracht wird, ist folgenden Dialog zu programmieren: "Welche Sprache sprechen Sie?" - "Französisch." - "Wollen Sie sich auf Französisch weiter unterhalten?" Ende.

Man lernt nicht, wie man mit dem Programm weitermachen kann, falls die Antwort des Benutzers "Ja" sein sollte. Man erfährt gar nichts. Was zu finden ist, ist, wie man EINE FRAGE STELLT und dann auf EINE ANTWORT zu dieser Frage reagieren kann. Das war's.

Ich wüsste gern, wie man das weiterspinnen kann. Wie man eine ganz lange Unterhaltung mit allen möglichen Antwortmöglichkeiten programmieren kann. So wie bei einem Windows-Installationassistenten, der dafür sorgt, dass Windows unter hundert verschiedenen Arten auf die Art installiert wird, wie der Benutzer es will.

Wenn die Benutzer dieser Seite keine Antwort auf die Frage haben, weil sie es selbst nicht wissen, ist das überhaupt kein Problem. Man trifft immer wieder einen It-Profi, der es vielleicht weiß.

Allerdings lässt sich extrem leicht feststellen, dass irgendwelche Teenies oder Leute, die auf dem geistigen Niveau von (nicht sehr gut erzogenen) Teenies stehengeblieben sind, es sich zum Hobby machen, auf dieser Seite unvorstellbar bösartig und beleidigend zu antworten. Es ist völlig egal, was man fragt, egal ob "Wie heißt das weiße Zeug, das früher auf den Donuts war?" oder "In welchen Läden kann man viele naturfreundliche Reinigungsmittel kaufen?" Es wird immer geantwortet von irgendwelchen Leuten, die zu wenig zu tun haben und sich ihre Zeit vertreiben, Leute im Internet mit Sprüchen wie "Boah, Alta, wie dumm BIIISSSSST Du eigentlich?" zu beleidigen.

Ich werde auf so einen Schwachsinn nicht antworten, auch nicht auf "gut gemeinte Rückfragen" und schon gar nicht auf "Also, mit SO EINER NEGATIVEN EINSTELLUNG MENSCHEN GEGENÜBER würde ich hier aber KEINE Frage stellen".

Die Frage ist klar formuliert, so klar wie sie klarer nicht formuliert werden kann. So wie "Was ist 2 + 2?" Wenn jemand die Antwort wüsste, würde mich das sehr freuen. Wenn nicht, dann nicht.

Danke, Ende.

Computer, IT, programmieren, Java, Anwendungsentwicklung, C Sharp, Programmiersprache, Python, Softwareentwicklung, Webentwicklung, Rust, Programmcode, Objektorientierte Programmierung
Frage an die Erfahrenen Entwickler insbesondere C#-Entwickler?

Erst einmal hallo in die Runde und ich hoffe, euch geht es gut.

Vorgeschichte:

Ausbildung im Januar 2024 erfolgreich abgeschlossen als Fachinformatiker für Anwendungsentwicklung, während der Ausbildungszeit keinen Mentor / Ausbilder gehabt, der Fragen beantworten konnte, geschweige denn eingearbeitet hat. Von Tag eins an war mein Job eher im an Druckern stehen (war eine Druckerei) und im Lager Papiere einholen und daneben dann noch Programmieren in C# mit WinForms für die kaufmännischen Abteilungen, um deren Arbeit zu automatisieren. Meistens musste ich die Arbeit mit nach Hause nehmen, mir dort noch Gedanken machen und das lösen und daneben eben auch noch die Ausbildungsthemen aneignen, sei es schulisch die Theorie oder eben für die IHK-Prüfung die Theorie. Das heißt, ich habe von 8 bis 17 Uhr gearbeitet und war dann so gegen 18 Uhr zu Hause, habe geduscht und gegessen und so gegen 19 Uhr angefangen zu lernen bis 22-23 Uhr, dann schlafen und Repeat.

Hätte ich einen Mentor gehabt oder ein Entwicklerteam, würde ich sogar noch sagen, okay, ich habe viel Wissen erlangt in der Zeit, war hart, aber Lehrjahre sind keine Herrenjahre, wie man so schön sagt. Jedoch wurde mir eben nichts gezeigt, es kamen eher Sprüche wie "du bist ja immer noch nicht fertig, du musst doch nur ein paar Buchstaben da rein tippen, so schwer kann es nicht sein" oder alle 10 Minuten stand einer hinter mir und räusperte sich. Ach ja, ich habe in einem Großraumbüro gearbeitet, welches direkt am Lager bei den großen Druckern stand, also durchgehend Lärm wie von einem Rasenmäher, und dann versucht euch mal als Azubi dort zu konzentrieren und alle 10-15 Minuten merkt ihr, dass jemand über die Schulter guckt und ihr wisst genau, die verstehen das sowieso nicht, weil das einfache EDV-Mitarbeiter waren.

Grundlagen in die Programmierung und C# VisualStudio usw. die ganze Welt des Entwicklers musste ich mir eigenständig per w3schools ChatGpt und Google aneignen also das wofür eigentlich eine Ausbildung da gewesen wäre. Meine Aufgaben waren dann, Desktop-Apps zu schreiben für Mitarbeiter, die nicht so fit mit Computern sind. Diese sollten eine Excel/Xml/CSV-Datei einspielen und alles andere sollte dann das Programm erledigen und eine umsortierte und umgemappte Datei wieder ausgeben, womit die Kollegen dann weiterarbeiten können.

Für die Erfahrenen unter euch ist das sicher Kindergartenstoff und ihr kennt LINQ, um so durch Daten zu suchen, Datenbanken mit Entity Framework usw. ABER bedenkt, dass ich ein Azubi war, der nie etwas vom Programmieren wusste, ich muss nun alles ergoogeln und dann ist man eben bei Schleifen und Anweisungen und fängt an, Tabellen mit Schleifen usw. zu durchsuchen, was eine gute Übung ist, keine Frage, jedoch sollte man auch mit der Zeit gehen und wenn man ausbildet, auch dem Azubi sagen, hör mal, mach eine Tabelle so, damit du verstehst, was da wirklich passiert, aber effektiver nutze LINQ oder nutze dies oder das. Aber ich hatte eben keinen. Der Ausbilder, den ich hatte, hat vor über 10 Jahren das letzte Mal in Visual Basic programmiert und die einzige Hilfe, die von ihm kam, war "ja, musst du googeln" und "hier ein VB-Projekt von mir, ist zwar was Kleines, aber C# und VB sind identisch".

Gegenwart:

Da ich so gebrandmarkt war von C#, habe ich irgendwie einen Hass dagegen entwickelt und dachte mir, du fängst jetzt nach der Ausbildung an, neu zu lernen, fang mit HTML, CSS, JavaScript an und dann schaust du dir React an, gesagt, getan. Jedoch ist der Arbeitsmarkt so gesättigt von Junioren und Quereinsteigern, gerade im Frontend-Bereich, dass ich nun weit über 100 Bewerbungen geschickt habe und mangels Erfahrung in praxisnahen Projekten abgelehnt werde oder die suchen Studenten, die im Bachelor oder Master sind.

Eigentliche Frage:

An die C#-Entwickler: Der .NET-Kosmos ist ja riesig und WinForms ist veraltet, eigentlich hätte man mir in der Ausbildung sagen sollen, mach es mit WPF, aber die kannten das nicht und es hieß, wir haben schon immer damit Programme erstellen lassen, das bleibt so. Würdet ihr sagen, ich soll mich erneut an C# setzen?

Ich bin auch mit Personaldienstleistern in Kontakt und die sagen auch, Frontend Web ist überfüllt und du hast viele Konkurrenten, bleib bei C#. Und wenn ja, was wäre so das Sinnvollste in diese Richtung, sicher nicht WinForms.

Mein Ranking wäre:

  • Grundlagen nochmal auffrischen und festigen
  • LINQ
  • ASP .NET Core
  • Entity Framework

Falls ihr aber sagt, lass die Finger von C#, fang mit Python an, weil auf dem TIOBE-Index ist das immer auf Rang 1 und immer mehr Unternehmen gehen dahin, oder mach Java, dann bin ich auf eure Begründungen gespannt.

Eigentlich wollte ich mich kurz fassen, aber ich denke, so hat man etwas mehr Einsicht, in welcher Lage ich mich befinde. Eventuell ist ja jemand einen ähnlichen Weg gegangen, ich bin für jede Antwort dankbar.

programmieren, Java, Anwendungsentwicklung, berufseinsteiger, C Sharp, Python, Softwareentwicklung
Bash Script um DNS umzustellen?

Habe einmal ein Bash Script und eine .Desktop Verknüpfungen auf meinem Arch KDE und wollte bei Doppelklick auf die Verknüpfungen zb Updaten oder DNS auf 8.8.8.8 oderr Automatisch Umstellen.

(Ich kann auch via KDE Connect das ganze Starten und ohne EIngabe abschließen mit sudo pacman -Syu --noconfirm && yay -Syu --noconfirm)

Aber bei toggle_dns funktioniert das leider nicht mit dem gelieferten Code von ChatGPT (siehe Unten) und ich kann garkein Bash, nur "normale" programmiersprachen wie JavaScript oder PHP. Mit Python würde ich es vielleicht hinkriegen aber das ist doch viel aufwendiger jetzt die IDE erneut zu installieren als mit Bash.

Wenn es das gibt wollte ich eine KDE eigene Benachrichtigung in welchen Modus es jetzt gewechselt ist zb : DNS auf Automatisch umgestellt oder DNS auf 8.8.8.8 Umgestellt statt ein Terminal was ich dann noch per hand schließen muss.
Kann mir jemand weiterhelfen den Code zu reparieren ?

toggle_dns.sh :

#!/bin/bash

# Datei und Schnittstelle für die DNS-Konfiguration
RESOLV_CONF="/etc/resolv.conf"
INTERFACE="Netzwerkschnittstelle_von_euch"

# Funktion zum Setzen des DNS-Servers auf 8.8.8.8
set_dns() {
  echo -e "nameserver 8.8.8.8\noptions edns0" | sudo tee $RESOLV_CONF > /dev/null
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf 8.8.8.8 gesetzt."
}

# Funktion zum Zurücksetzen des DNS-Servers auf automatisch
reset_dns() {
  sudo rm -f $RESOLV_CONF
  sudo systemctl restart NetworkManager
  notify "DNS wurde auf automatisch gesetzt."
}

# Funktion zum Senden einer KDE-Benachrichtigung
notify() {
  message=$1
  kdialog --passivepopup "$message" 5
}

# Überprüfen, ob der DNS-Server bereits auf 8.8.8.8 gesetzt ist
if grep -q "8.8.8.8" $RESOLV_CONF; then
  echo "DNS ist derzeit auf 8.8.8.8 gesetzt. Umschalten auf automatisch."
  reset_dns
else
  echo "DNS ist derzeit automatisch konfiguriert. Umschalten auf 8.8.8.8."
  set_dns
fi

Bild zum Beitrag
PC, Server, Computer, Internet, Windows, WLAN, Technik, Linux, IT, programmieren, Java, JavaScript, Ubuntu, Cplusplus, Bash, C Sharp, DNS, Gnome, Informatik, KDE, Programmiersprache, Python, Script, Shell, Arch Linux, Rust, Debian, PowerShell, KDE Plasma, node
Code funktioniert nicht?

Der Code an sich ist etwas länger, aber diese Stelle scheint nicht zu funktionieren.
private List<string> SelectFiles(List<string> fileList)

{

  _logger.Log("Bitte geben Sie die Nummern der Handbücher ein, die Sie verarbeiten möchten (kommagetrennt, z.B. 1, 3-5), oder drücken Sie Enter, um alle zu verarbeiten:");

  string input = Console.ReadLine();

  List<string> selectedFiles = new List<string>();

  if (string.IsNullOrEmpty(input))

  {

    // Wenn keine Auswahl getroffen wurde, alle Dateien verarbeiten

    selectedFiles = fileList;

  }

  else

  {

    // Verarbeite die ausgewählten Nummern und Bereiche

    string[] inputParts = input.Split(',');

    HashSet<int> indices = new HashSet<int>();

    foreach (string part in inputParts)

    {

      if (part.Contains('-'))

      {

        string[] rangeParts = part.Split('-');

        if (rangeParts.Length == 2 &&

          int.TryParse(rangeParts[0].Trim(), out int start) &&

          int.TryParse(rangeParts[1].Trim(), out int end))

        {

          for (int i = start; i <= end; i++)

          {

            indices.Add(i);

          }

        }

      }

      else if (int.TryParse(part.Trim(), out int index))

      {

        indices.Add(index);

      }

    }

    foreach (int index in indices)

    {

      if (index > 0 && index <= fileList.Count)

      {

        selectedFiles.Add(fileList[index - 1]);

      }

    }

  }

  return selectedFiles;

}
Da fehlt sehr sehr viel beim Code, aber es geht um die Eingabe. Ich gebe ein:
1,2,4-6,3 Aber er macht nur was mit 1 2 3 udn 4 bis 6 lässt er weg, warum?

C Sharp, Code, Programmiersprache
Unity: Wieso läuft die Registrierung schief?

Hallo,

ich bin gerade dabei, ein Unity-Spiel zu programmieren. In dem Spiel soll man sich registrieren können, dabei benutze ich PlayFab. Bei dem Test der Registrierung läuft etwas schief und ich weiß einfach nicht wieso. Vielleicht könnt ihr mir weiterhelfen?

Danke für jede Antwort.

Unity:

Das Spiel:

Das Skript:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayFab.ClientModels;
using PlayFab;
using System;
using UnityEditor.PackageManager.Requests;
using UnityEngine.UI;
using TMPro;
using PlayFab.PfEditor;

public class PlayFabLoginScript : MonoBehaviour
{
  public TextMeshProUGUI regPassword, regUsername, regEmail;
  public GameObject regPanel;

  // Start is called before the first frame update
  void Start()
  {
    var request = new LoginWithCustomIDRequest { CustomId = "GettingStardedGuide", CreateAccount = true };
    PlayFabClientAPI.LoginWithCustomID(request, OnLoginSucces, OnLoginFailure);
  }

  private void OnLoginFailure(PlayFabError obj)
  {
    Debug.Log("Es ist etwas schief gelaufen");
  }

  private void OnLoginSucces(LoginResult obj)
  {
    Debug.Log("API Call hat funktioniert");
  }

  public void Register()
  {
    var request = new RegisterPlayFabUserRequest();
    request.TitleId = PlayFabSettings.TitleId;
    request.Email = regEmail.text;
    request.Username = regUsername.text;
    request.Password = regPassword.text;
    PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterResult, OnPlayFabError);
  }

  private void OnPlayFabError(PlayFabError obj)
  {
    print("Error:" + obj.Error);
  }

  private void OnRegisterResult(RegisterPlayFabUserResult obj)
  {
    print("Registrierung hat funktioniert");
    regPanel.SetActive(false);
  }
Bild zum Beitrag
C Sharp, Code, Programmiersprache, Spieleentwicklung, Visual Studio, Unity
Wie funktionieren Klassen in C#?

Hallo, ich habe große Verständniss Schwierigkeiten mit meinen momentanigen Thema in meinem IT Kurs. Wir machen aktuell C# und antscheind habe ich das Prinzip einer Klasse noch nicht ganz verstanden. Ich werde meinen Code unten rein packen, um Fragen geklärt zu bekommen.

Kontext zum Code

Ich soll im allgemeinen ein Programm schreiben, indem man 4 oder mehr Wiederstände miteinander verrechnet. Dazu soll eine Klasse Wiederstand erstellt werden. Eine Instanz der Klasse kann nur mit der Angabe des Widerstandswerts gebildet werden. Der Wert kann gelesen, aber nicht verändert werden. Instanzen der Klasse Widerstand können mit + addiert werden. Dann ergibt sich der Widerstand, als Gesamtwiderstand einer Reihenschaltung. Der Operator / berechnet den Gesamtwiderstand einer Parallelschaltung. Die Methode ToString() liefert den Widerstandswert als Text mit Einheit zurück. Dazu sollen wir zudem ein User Interface anlegen.

Meine Fragen in Bezug auf den Code:

  1. Wieso kann ich in Operatoren nur 2 Operatoren gleichzeitig überschreiben? Dazu soll ich ja mehrere Wiederstände beispielsweise in eine Reihenschaltung schalten. Den + operator überschreibe ich ja so, dass ich: R1 + R2 zusammen addieren kann. Das geht ja jedoch nur mit max: R1 + R2 + R3 und dann ist schluss. Die einziege Lösung, die mir da einfällt ist ein Array und eine Schleife zu benutzen.
  2. Als zusätzliche Lösung für mein 1 Problem, habe ich überlegt statt einen Operator zu überschreiben eine einfache Funktion anzulegen, die dies berechnet. Jedoch ist das nicht die Aufgabenstellung. Dazu meine Frage: Wieso keine Funktion benutzen sondern einen Operator überschreiben, wo liegt da der Sinn?
  3. Die Frage bezieht sich auf den Code hinter dem User Interface. Wie kann ich generell auf meine Klasse zugreifen und vom User eingebende Werte in meine Klassen Vabriable Wert schreiben? Muss ich dazu immer eine neue Klasse erstellen?
  4. Wie hängt der Operator mit der Vabriable Wert meiner Klasse zusammen? In den Operatoren habe ich ja Vabriablen wie R1 und R2. Wie werden also dort die verschiedenen Werte herrein geschrieben?

Hier mein Code: (ich kann den leider nur als Foto beilegen, da es sonst die Zeichengrenze überschreitet)

Vielen Dank an jeden, der sich die Geduld und Zeit nimmt mir zu helfen, da ich bald eine Klausur schreibe und schon ein bisschen Verzweifelt bin!

Bild zum Beitrag
C Sharp
Wie kann ich bei Unity einem 2D generierten Mesh einen Collider geben?

Ich arbeite in Unity zurzeit an einen kleinen Projekt und bin auf folgendes Problem gestoßen:

Ich generiere dieses Mesh mit Perlin Noises, also quasi eine Berglandschaft. Sie sieht auch gut aus, nur jetzt habe ich das Problem mit den Collider. Und zwar mache ich das aktuell mit einem Polygon Collider, wo ich die Punkte per Code selber erstelle:

private void GenCollider()
{
  GrassMashObject.AddComponent<PolygonCollider2D>();
  GrassMashObject.GetComponent<PolygonCollider2D>().sharedMaterial = GrassPhysics;
  PolygonCollider2D polygonCollider = GrassMashObject.GetComponent<PolygonCollider2D>();

  if (polygonCollider != null)
  {
    Vector2[] points = new Vector2[(WorldSize + 1) * (yHight + 1)];

    for (int i = 0, y = 0; y <= yHight; y++)
    {
      for (int x = 0; x <= WorldSize; x++)
      {
        points[i] = new Vector2(x, y - (WorldSize / 4f));

        if (y == 1)
        {
          float perlin1 = (float)x / PerlinScale;
          float perlin2 = (float)y / PerlinScale;
          float perlin3 = Mathf.PerlinNoise(perlin1, perlin2);
          float perlin4 = Mathf.PerlinNoise(perlin1 * 2, perlin2 * 2);
          float perlin5 = Mathf.PerlinNoise(perlin1 / 2, perlin2 / 2);
          points[i].y = y + ((perlin3 + perlin4 + perlin5) * PerlinHeight);
        }

        i++;
      }
    }

    polygonCollider.points = points;
  }
}

Es funktioniert ganz gut, nur werden manche Punkte falsch zusammengesetzt und deshalb werden sehr unnötige "Linien" zwischen den Punkten generiert. Deshalb kommt es auch manchmal zu massiven Performenceeinbrüchen.

Ich bin für jede Hilfe dankbar! Danke im Voraus!

C Sharp, Visual Studio
Berufseinstieg in meiner aktuellen Lage sehr schwer was tun?

Hallo zusammen, ich hoffe euch geht es soweit gut :-)

Ich hätte eine Frage, die mir auf der Seele brennt, an die erfahrenen ITler. Eventuell kann mir ein/eine ITler/in einen Leitfaden oder Tipps geben, um attraktiver für den Arbeitsmarkt zu werden?

Kurz zu meinem Werdegang:

Ich habe kurz bevor die Corona-Pandemie losging meinen Job als Technischer Produktdesigner verloren (Vertragsbruch durch den Arbeitgeber) und durch die Pandemie keinen neuen Job gefunden, da die Unternehmen zu dem Zeitpunkt selbst Probleme hatten, ihr eigenes Personal zu halten. Nun stellte sich die Frage "wartest du die Pandemie ab oder machst du eine Umschulung?" Da zu dem Zeitpunkt (vor etwa 3 Jahren) kein Ende der Pandemie in Sicht war, entschloss ich mich, eine Umschulung zum "Fachinformatiker für Anwendungsentwicklung" zu machen.

Gesagt, getan. Leider war das Umschulungsunternehmen eines dieser schwarzen Schafe, die einfach schnelles Geld machen wollten, jedoch in keinster Weise ausgebildet haben. Dort bin ich durch die schriftliche Abschlussprüfung mangels theoretischen Wissens durchgefallen, sodass ich nach dem zweiten Jahr (Umschulung ging zwei Jahre) mich bei einem Unternehmen gemeldet habe, das mich als Azubi im dritten Lehrjahr eingestellt hat, und dort habe ich dann meine Ausbildung erfolgreich abgeschlossen. Jetzt war das Unternehmen leider eines, welches keine eigenen Entwickler hatte. Der Ausbilder sagte selbst, das letzte Mal als er programmiert hat, sind mindestens 10 Jahre her, bei seiner Umschulung damals, wodurch mein Mentor das Internet war.

Naja, Zähne zusammengebissen, habe ich mich in C# und WinForms eingearbeitet und einige Desktop-Apps geschrieben, um die Arbeit zu automatisieren von den Kollegen. (Einfache Programme wie Tabellen umsortieren, Artikel-Nummern mappen, neue Artikel-Nummern in die Datenbank übergeben). Nebenbei natürlich noch den ganzen IHK-Stoff angeeignet, wodurch ich über den Tag gearbeitet habe und nach Feierabend dann IHK-Prüfungen durchgearbeitet habe.

Mir ist bewusst, dass ich aktuell erfahrungstechnisch nicht auf dem Level eines Juniors bin, der einen Mentor/Ausbilder während der Ausbildungszeit hatte, jedoch bemühe ich mich, Neues zu lernen.

Seit meinem Abschluss im Januar 2024 suche ich nach einer Trainee-/Junior-Stelle. Leider erhalte ich nur Absagen mangels Erfahrung. Da ich während der Zeit nicht einfach nur vor mich hinvegetieren will, arbeite ich mich eigenständig mit Udemy-Kursen in die Tech-Stacks eines Frontend-Entwicklers ein. Bis jetzt HTML- und CSS-Kurs beendet und aktuell am JavaScript-Kurs dran. Mit meiner aktuellen Erfahrung habe ich mir dann eine Webseite "Portfolio" aufgebaut (HTML & CSS).

Mir ist bewusst, dass die Unternehmen wirtschaftlich handeln müssen und da nimmt man eben den Besten auf, jedoch muss es doch auch Chancen geben für Leute wie mich, die eben keinen Mentor hatten, der einem was gezeigt hat und trotzdem gewillt sind, alles zu geben.

Tipps, HTML, JavaScript, Berufseinstieg, C Sharp, Mentoring, Webentwicklung, Junior, Fachinformatiker Anwendungsentwicklung, Appentwicklung, WinForms

Meistgelesene Beiträge zum Thema C Sharp