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

Meistgelesene Beiträge zum Thema C Sharp