Coding?

5 Antworten

Steht doch da.

Solange das eingegebene Kommando nicht "quit" ist, läuft die Abfrage.

Bei Eingabe von start wird "Car starts" ausgegeben.

Bei Enigabe von stop wird "car stopped" ausgegeben.

Bei help erscheint die Hilfe.

Alle anderen Eingaben landen im else unten.

Woher ich das weiß:Studium / Ausbildung – Begeisterter Beweger der 0 und 1

Moin. Das ist Python.

Der Code den du da hast, der läuft ganz oft durch und lässt den User was eingeben.

  • Wenn der User "start" eingibt, wird Car starts angezeigt.
  • Wenn der User "stop" eingibt, wird car stopped angezeigt.
  • Wenn der User "help" eingibt, wird ein Hilfetext angezeigt
  • Wenn der User "quit" eingibt, endet das Program.
  • Wenn der User was anderes gibt, wird ihm "Sorry we dont underatand." angezeigt.

Es ist außerdem Anfängercode und auch das Programm, eines Anfängers. Falls es deiner ist, mach dir keine Sorgen, man lernt alles mit der Zeit. Anfänger sein ist nichts schlimmes, es ist ein Prozess.

Und die While Schleife ist auch mal ein anderer Ansatz.

Woher ich das weiß:Berufserfahrung – Bin Softwareentwickler

Wieder so eine basic Frage... Na gut, lass es mich mal in RICHTIGE Sprache übersetzen, damit du siehst was da eigentlich passiert:

section .data

   prompt db "> ", 0

   start_msg db "Car starts.", 0xA, 0

   stop_msg db "Car stopped.", 0xA, 0

   help_msg db "start - to start the car.", 0xA

           db "stop - to stop the car.", 0xA

           db "quit - quit the game.", 0xA, 0

   error_msg db "Sorry we dont understand.", 0xA, 0

section .text

global _start

_start:

   ; Initialisiere command buffer

   xor ebx, ebx   ; command = ""

command_loop:

   ; Vergleiche mit "quit"

   cmp ebx, 'quit'

   je exit_program

   ; Input handling

   mov eax, prompt

   call print_string

   call read_input

   call to_lowercase

   ; Command parsing

   cmp eax, 'start'

   je do_start

   cmp eax, 'stop'

   je do_stop

   cmp eax, 'help'

   je do_help

   ; Default case

   mov eax, error_msg

   call print_string

   jmp command_loop

Was du da siehst ist eigentlich ein simpler State Machine Handler in Python (🤮), der basicly nur Input parsed und responded. Quasi ein glorifizierter Echo-Server ohne Socket-Layer.

Der interessante Part ist die Command Chain Resolution über Sequential String Matching - in Assembly hätte man das VIEL eleganter mit einem Jump Table lösen können, aber hey, ist Python né? 🤷‍♂️

Der While-Loop implementiert einen Basic Command Processor der vier States supported:

- START

- STOP

- HELP

- ERROR (default handler)

Warum man sowas in Python schreibt anstatt gleich proper lowlevel C ist mir schleierhaft...

Die String Comparison Chain ist auch mega ineffizient - bei mehr als 3-4 Commands würd ich da minimum ein Binary Search Tree implementieren, besser noch ne Hash Table mit O(1) Lookup.

Tja, back in my days™ haben wir sowas noch RICHTIG gelernt - mit proper Memory Management und allem drum und dran!

/rant

Hoffe das hat dir bisschen die Augen geöffnet was ECHTES Programming ist! 😉

~Dr. Hart

Woher ich das weiß:Berufserfahrung

Je nachdem, was du eingibst, kommt eine andere Ausgabe heraus. Was man eingeben kann und was dabei raus kommen würde, ist leicht zu erkennen, auch ohne programmierkenntnisse.

Z.b. die Eingabe "start" fürt zur Ausgabe "Car starts"

Das Programm läuf solange, bis "quit" eingegeben wurde


Luffy8 
Beitragsersteller
 21.01.2025, 16:56

Sry bin neu in python Aber wo gebe ich die eingabe start ein?

DJFlashD  21.01.2025, 16:58
@Luffy8

Wenn du den code ausführst, öffnet sich irgendwo ein schwarzes fenster (oder ist bereits offen), wo ein cursor blinkt. Da einfach ein kommando (z.b. start) eingeben und enter drücken

DJFlashD  21.01.2025, 16:55

Ich sehe gerade - da ist sogar ein Programmierfehler drin.

Wenn man quit eingibt, sagt es dir erst noch, dass es die Eingabe nicht verstanden hat, bevor es sich beendet.

Der Code in dem while Block wird ausgeführt, bis man "quit" eingibt.

  1. Der Code in diesem Block nutzt die input Funktion damit man einen Text eingeben kann, das pausiert das Programm auch erst mal.
  2. Danach wird geschaut was eingegeben wurde, start, stop, help oder etwas anderes und ein passender Text ausgegeben.
  3. Das Programm springt dann wieder zu dem command != "quit", wenn man aber quit eingegeben hat, wird dieser Block übersprungen und das Programm ist am Ende angekommen.

Etwas dämlich ist, dass in Schritt zwei nicht der Fall behandelt wird, dass man quit eingibt, das Programm gibt dann den Text aus, dass es nicht versteht was der Nutzer will, beendet sich aber trotzdem. Naja.