Funktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

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.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

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.
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

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
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

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).
Zuletzt geändert von sparrow am Mittwoch 11. November 2020, 15:39, insgesamt 2-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

funktionieren die Befehle ord() und chr() nur wenn man Funktionieren definiert?
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
StevenB99
User
Beiträge: 33
Registriert: Donnerstag 4. Juni 2020, 23:12

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.
Antworten