was bedeutet 23 % 10?

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
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

hallo zusammen ich habe mit einem Buch angefangen das programmieren zu lernen.
Bis jetzt habe ich alles ziemlich gut verstanden doch eine Aufgabe verstand ich nicht ganz,es geht darum das man eine Zahl eingeben kann und das Programm dann dieses Zahl als Wort ausgibt.
Hier ist mal der Code der vom Buchautor geschrieben wurde

Code: Alles auswählen


def zahlwort(zahl):
    einer = zahl % 10  

    if einer == 1: e = "ein"
    elif einer == 2: e = "zwei"
    elif einer == 3: e = "drei"
    elif einer == 4: e = "vier"
    elif einer == 5: e = "fünf"
    elif einer == 6: e = "sechs"
    elif einer == 7: e = "sieben"
    elif einer == 8: e = "acht"
    elif einer == 9: e = "neun"

    zehner = zahl // 10  

    if zehner == 0:   z = ""
    elif zehner == 1: z = "zehn"
    elif zehner == 2: z = "zwanzig"
    elif zehner == 3: z = "dreissig"
    elif zehner == 4: z = "vierzig"
    elif zehner == 5: z = "fünfzig"
    elif zehner == 6: z = "sechzig"
    elif zehner == 7: z = "siebzig"
    elif zehner == 8: z = "achtzig"
    elif zehner == 9: z ="neunzig"

    if zahl == 11:    print "elf"
    elif zahl == 12:  print "zwölf"
    elif zahl == 17:  print "siebzehn"
    elif einer == 0:  print z
    elif zehner == 1: print e+z
    else:             print e+"und"+z

zahl = raw_input("Gib eine zweistellige ganze Zahl ein: ")
zahl = int(zahl)  # macht aus dem String zahl eine ganze Zahl
zahlwort(zahl)
Den ablauf des Programm verstehe ich doch was genau macht die Funktion

Code: Alles auswählen

einer=zahl%10
und

Code: Alles auswählen

zehner=zahl//10
sie geben einer-zahlen aus und zehner-zahlen aus der ganzen Zahl aus

aber ich dachte das zeichen "%"sein ein formatierungszeichen für strings?
und vorrallem warum muss man zweimal "//" eingeben das die Zehnerstelle ausgegeben wird?
Also mir sind die Bedeutungen dieser zeichen nicht ganz klar

Ich danke euch für die antwort
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Den Operator, den du meinst, ist der Modulo-Operator.
Er gibt den Rest der Division des ersten durch den zweiten Operanden.

Also 10%2 ergibt 0, da 10/2 = 5 ist und nichts übrig bleibt. 11%2 hingegen gibt 1 zurück, da 10/2 gerechnet wird und da dann noch eins übrig bleibt.

das Prozentzeichen ist auch ein Formatierungszeichen für Strings, wird dann aber beispielsweise so verwendet:

Code: Alles auswählen

'I have %d apples.' % 6
Mehr zu diesem Thema findest du hier.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

0John0 hat geschrieben:und vorrallem warum muss man zweimal "//" eingeben das die Zehnerstelle ausgegeben wird?
Hallo 0John0!

Code: Alles auswählen

>>> 1 / 2
0
>>> 1 // 2
0
>>> 1.0 / 2
0.5
>>> 1.0 // 2
0.0
>>> 1.0 // 1.5
0.0
>>> 1.0 / 1.5
0.66666666666666663
>>> 
Ganzzahl / Ganzzahl = Ganzzahl
Ganzzahl // Ganzzahl = Ganzzahl

Fließkommazahl / Ganzzahl = Fließkommazahl
Ganzzahl / Fließkommazahl = Fließkommazahl

Fließkommazahl // Ganzzahl = Ganzzahl
Ganzzahl // Fließkommazahl = Ganzzahl

/ gibt eine Ganzzahl zurück, wenn beide Zahlen eine Ganzzahl sind.

/ gibt eine Fließkommazahl zurück, wenn mindestens eine der beiden Zahlen eine Fließkommazahl ist.

// gibt IMMER eine Ganzzahl zurück. Der Dezimalbereich wird einfach abgeschnitten. Es wird nicht gerundet.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

gerold hat geschrieben:/ gibt eine Ganzzahl zurück, wenn beide Zahlen eine Ganzzahl sind.

/ gibt eine Fließkommazahl zurück, wenn mindestens eine der beiden Zahlen eine Fließkommazahl ist.
Das wird sich aber in Python 3000 ändern, dort gibt dann "Ganzzahl/Ganzzahl" auch eine Fließkommazahl, wenn nötig (dashalb wurde ja überhaupt // eingeführt)

Alternativ kann man dieses Verhalten schon jetzt für seine Programm aktivieren:

Code: Alles auswählen

>>> from __future__ import division
>>> 1/2
0.5
0John0
User
Beiträge: 12
Registriert: Donnerstag 8. Februar 2007, 12:17

Danke vielmals :D
Super erklärt!Jetzt da ich weiss was es bedeutet erscheint es mir natürlich einfach :wink:
Antworten