Python Code 1st, 2nd, 3rd usw?

... komplette Frage anzeigen

4 Antworten

Kurz und knackig:

ends = 'th st nd rd'.split()
n = int(input('Zahl: '))
print('%d%s' % (n, ends[n if n < len(ends) else 0]))

Vielleicht hast du Glück, und jemand findet eine noch kürzere Lösung. ;)

PS: Falls du auch negative Zahlen korrekt behandeln willst:

a = abs(n)
print('%d%s' % (n, ends[a if a < len(ends) else 0]))

Dann wird dir bei einer Eingabe von "-2" auch "-2nd" ausgegeben! :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von derwebpro
11.02.2016, 18:40

Recht komplex ... aber stark

0

Du setzt erst

x = input()

Dann verwirfst du x und lässt eine Schleife mit x von 1 bis 10 laufen:

for x in range(1,10):
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Cover1
07.02.2016, 22:27

Habe ich doch gemacht oder übersehe ich da etwas?

0

wozu die for-schleife?

mit for x in ... überschreibst du dein input-x

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Cover1
07.02.2016, 22:24

Für den Fall dass der input z.B 10 oder höher ist oder 0 und geringer. Es sollen ja nur die Zahlen von 1-9 ausgegeben werden

0

wieso musst du bei dr ausgabe x in einen string umwandeln ?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Cover1
07.02.2016, 22:10

Verstehe ich selbst nicht so genau, ohne das umwandeln kam eine Fehlermeldung

0
Kommentar von derwebpro
07.02.2016, 22:11

ok... verstehe noch nicht viel von python, deshalb die Frage.

0
Kommentar von derwebpro
07.02.2016, 22:16

Verstehe jetzt die Fehlermeldung... du hast x = input gesetzt... input müsste ein string sein um mit der Zahl zusammen ausgegeben werden können, also so: x = "input()"

0
Kommentar von derwebpro
11.02.2016, 12:17

Code geht so : def abfrage(zahl): if zahl == "1": print(zahl + "st") if zahl == "2": print(zahl + "nd") if zahl == "3": print(zahl + "rd") elif zahl >= "4": print(zahl + "th") abfrage(input("Zahl: ")) Habe mich reingelesen und der Code funktioniert.

0