Dictionary nur bis einschließlich 9....

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
aski011
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2020, 21:31

Hallo Allerseits,

ich habe da ein Problem und stehe irgendwie ziemlich auf dem Schlauch. Und zwar möchte ich mir zu Übungszwecken ein kleines Programm schreiben, welches das Alter eines Hundes und Menschenjahre umrechnet. Nun habe ich mir ein Dictionary mit entsprechenden Schlüssel und Werten erstellt. Rufe ich die Schlüssel von 1-9 auf, werde die richtigen Werte zugeordnet. Ab 10 allerdings fliege ich irgendwie aus dem Dictionary heraus und es wird mir ein anderer Wert außerhalb des Dictionary ausgegeben..... Was mache ich falsch?

Viele Grüße und einen guten Rutsch

Michael
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wozu brauchst du denn ein dictionary? Eine simple Multiplikation mit 7 reicht doch?

Und wenn du Hilfe mit deinem Code brauchst, musst du den auch zeigen.
aski011
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2020, 21:31

Frohes neues Jahr Allerseits!

Ja, eine Multiplikation mit 7 würde reichen, mir geht es allerdings nicht um den effizientesten Weg sondern um die Funktion des Dictionary.... Nun habe ich mir ein zweites Dictionary erstellt, welches die Schlüssel-Werte-Paare von 10-19 beinhaltet. Das Problem besteht weiterhin....
Hier mal mein Code: (PS: Die einfachere von beiden Lösungen habe ich auskommentiert)

Code: Alles auswählen

alter = input("Wie alt ist ihr Hund?: ")
hundMensch = {"3" : "27", "4" : "32", "5" : "37", "6" : "42", "7" : "47", "8" : "52", "9" : "57"}
hundMenschB = { "10": "62", "11" : "67", "12" : "72", "13" : "77", "14" : "82", "15" : "87", "16" : "92", "17" : "97", "18" : "102", "19" : "107"}



if alter < "2":
    print("Das Alter ihres Hundes beträgt etwa 14 Menschenjahre.")
elif alter == "2":
    print("Das Alter ihres Hundes beträgt etwa 22 Menschenjahre")
elif alter > "2":
    print("Das Alter Ihres Hundes beträgt in Menschenjahren ca. " + (hundMensch[alter]) + " Jahre")
else:
    print("Das Alter Ihres Hundes beträgt in Menschenjahren ca. " + (hundMenschB[alter]) + " Jahre")

#age = int(input("Alter des Hundes: "))
#print()
#if age < 0:
 #   print("Das stimmt wohl nicht")
#elif age == 1:
 #   print("Entspricht etwa 14 Jahre")
#elif age == 2:
 #   print("Entspricht etwa 22 Jahre")
#elif age > 2:
 #   human = 22 + (age -2)*5
  #  print("MenschenJahre", human)
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

aski011 hat geschrieben: Freitag 1. Januar 2021, 21:08

Code: Alles auswählen

if alter < "2":
Schau mal:

Code: Alles auswählen

$ python3   
Python 3.7.7 (default, Jun 20 2020, 16:26:55) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> alter = "11"
>>> if alter < "2":
...     print("alter ist kleiner als 2")
... else:
...     print("alter ist größer als 2")
... 
alter ist kleiner als 2
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@aski011: Das hat überhaupt nichts mit Wörterbüchern zu tun, sondern mit Zeichenketten und Vergleichen. Wenn Du Zahlenwerte auf grösser/kleiner Vergleichen willst, dann musst Du das mit Zahlen machen, nicht mit Zeichenketten, denn:

Code: Alles auswählen

In [66]: "10" > "2"                                                             
Out[66]: False

In [67]: 10 > 2                                                                 
Out[67]: True
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
aski011
User
Beiträge: 3
Registriert: Donnerstag 31. Dezember 2020, 21:31

Nabend,

das ist mir nun wirklich peinlich. Da hätte ich selber drauf kommen müssen. Sorry.
Blutiger Anfänger eben....
Antworten