Seite 1 von 1

Funktion

Verfasst: Mittwoch 11. November 2020, 14:22
von StevenB99

Code: Alles auswählen

def buchstabe(abcdef):           
    laenge = len(abcdef)      #output 6(Länge der Ursprünglichen Zeichenkette ermitteln)
    laenge = laenge-1        #output 5
    zaehler = laenge         #output 5

    print("Verschlüsselung durch Umdrehen")
    while zaehler >=0:
        print (abcdef[zaehler],end="")              
        zaehler=zaehler-1
print (abcdef[zaehler],end="") <------------------ ich verstehe diese Zeile nicht. Warum gibt er nur die Position(Platzhalter) in umgekehrter Form wieder, wenn ich "abcdef" weglasse? Ich weiß das es der Parameter ist,trotzdem verstehe ich es nicht.

Re: Funktion

Verfasst: Mittwoch 11. November 2020, 14:25
von sparrow
Was meinst du mit Position/Platzhalter?
Und wo lässt du abcdef weg?

Zeig doch den Code, den du ausführst und was ausgegeben wird.

Re: Funktion

Verfasst: Mittwoch 11. November 2020, 14:34
von noisefloor
Hallo,

verstehe ich auch nicht ganz... `zaehler` ist doch auch nur eine Variable bzw. hier ein Integer-Wert, der vom Startwert bis Null runtergezählt wird. `print(zaehler)` gibt den Wert halt aus.

Ansonsten ist "buchstabe" ein schlechter Name für eine Funktion. Der Name sollte möglichst aussagekräftig beschreiben, was die Funktion macht. `abcdef` ist ein ziemlich schlechter Name für eine Variable, weil völlig nichtssagend. Die ersten drei Zeilen der Funktion kann man in eine packen.
Generell trennt man normalerweise auch Logik und Ausgabe, d.h. die Funktion gibt das umgedrehte Word zurück und _dann_ gibt es es (außerhalb der Funktion) aus.

Einen String kann man in Python auch einfach so umdrehen:

Code: Alles auswählen

>>> wort = 'Python'
>>> wort[::-1]
'nohtyP'
>>>
Gruß, noisefloor

Re: Funktion

Verfasst: Mittwoch 11. November 2020, 15:25
von StevenB99

Code: Alles auswählen

def dreher(kette):
    laenge = len(kette)
    laenge = laenge - 1
    zaehler = laenge

    print("Verschlüsselung durch Umdrehen")
    while zaehler >= 0:
        print(kette[zaehler], end = "")                <----------------- 
        zaehler = zaehler - 1
 eingabe=input("Gib hier eine Zeichenkette ein")
drehen(eingabe) 


So wenn ich hier "kette" weglasse dann kommen nur die Platzhalter in umgedrehter Form

z.B  input=abcdefg
        output=6,5,4,3,2,1,0    
        
         Ich verstehe nicht warum  "Kette" da stehen muss,sodass der output=gfedcba ist und nicht 6,5,4,3,2,1,0

Re: Funktion

Verfasst: Mittwoch 11. November 2020, 15:34
von sparrow
Der Code gibt gar nichts aus, weil "drehen" nicht definiert ist.

Und wenn ich "kette" aus der entsprechenden Zeile lösche, dann ist der Output auch nicht "6,5,4,3,2,1,0" sondern [6][5][4][3][2][1][0]. Ich finde das ist ziemlich unterschiedlich.

"kette" ist eine Variable. An die Variable wird gebunden, was als erster Parameter der Funktion "dreher" übergeben wird. Wenn es sich um eine Zeichenkette handelt, kann man (wie bei einer Liste) auf einzelne Elemente zugreifen. Mit kette[0] auf das erste Element (also den ersten Buchstaben).
Wenn du in der Zeile weg lässt, dann wird die Variable "zaehler" trotzdeme heruntergezählt. Und wenn du das dann ausgibst, dann steht dann da der Wert von zaehler (und wenn du die eckigen Klammern nicht weg nimmst, dann halt der Wert als einziges Element in einer Liste).

Re: Funktion

Verfasst: Mittwoch 11. November 2020, 15:35
von __blackjack__
@StevenB99: Und wir verstehen nicht warum Du das nicht verstehst. Wenn Du `kette` weg lässt, dann werden halt nur die Werte von `zaehler` ausgegeben, weil genau das dann da steht. Warum sollte Python nicht exakt das machen was Du im Code sagst was gemacht werden soll?

Re: Funktion

Verfasst: Donnerstag 12. November 2020, 11:27
von StevenB99
funktionieren die Befehle ord() und chr() nur wenn man Funktionieren definiert?

Re: Funktion

Verfasst: Donnerstag 12. November 2020, 11:56
von noisefloor
Hallo,
funktionieren die Befehle ord() und chr() nur wenn man Funktionieren definiert?
Heißt was genau also was meinst du genau?

`ord` und `chr` sind Build-In Funktionen, also in Python bereits definiert, d.h. du kannst diese Funktionen - wie alle Build-ins immer und überall aufrufen.

Gruß, noisefloor

Re: Funktion

Verfasst: Donnerstag 12. November 2020, 15:11
von StevenB99
x=ord("A")
y=ord("B")
print(x+y)


Hat sich geklärt, Danke. Sowas in der Art meinte ich. Ich muss nicht den Befehl def() benutzen.