2017-07-17 4 views
-1

also versuche ich diese Suchfunktion zu machen, die das Horoskop der Person zeigt, wenn der Name eingegeben wird. Ich habe es manuell mit 4 Namen gemacht, und ich weiß, dass es eine Möglichkeit gibt, den Code mit dem Wörterbuch zu komprimieren, das ich habe (aber nicht benutze), aber ich kann mich nicht erinnern.Wie komprimiere ich Python-Code?


Horoscopes = { 
    "A": "Scorpio", 
    "B": "Gemini", 
    "J": "Sagittarius", 
    "P": "Gemini", 
    } 

def horoscope(name): 
    if name == "A" or name == "a": 
     print ("Hello " + name + ", you are a Scorpio!") 
     print("Welcome to the Horoscope Search!") 
     name = input("What is your name? ") 
     horoscope(name) 
    elif name == "B" or name == "b": 
     print ("Hello " + name + ", you are a Gemini!") 
     print("Welcome to the Horoscope Search!") 
     name = input("What is your name? ") 
     horoscope(name) 
    elif name == "J" or name == "j": 
     print ("Hello " + name + ", you are a Sagittarius!") 
     print("Welcome to the Horoscope Search!") 
     name = input("What is your name? ") 
     horoscope(name) 
    elif name == "P" or name == "p": 
     print ("Hello " + name + ", you are a Gemini!") 
     print("Welcome to the Horoscope Search!") 
     name = input("What is your name? ") 
     horoscope(name) 
    else: 
     print ("Sorry " + name + ", you are not registered in our 
     system!") 
     print("Welcome to the Horoscope Search!") 
     name = input("What is your name? ") 
     horoscope(name) 

print("Welcome to the Horoscope Search!") 
name = input("What is your name? ") 
horoscope(name) 
+1

Können Sie Ihre Frage klären, und was Ihr Ziel ist es, wie Ihre Frage in Hinblick darauf, was nicht ganz klar ist Sie wollen etwas erreichen. –

+0

Hi, ich möchte den gesamten Funktionsblock in nur ein "if" und "else" komprimieren. Also wäre der if wahrscheinlich so etwas wie wenn der Name im Wörterbuch vorhanden wäre, dann würde der Name der Person zusammen mit dem Wert, der das Horoskop ist, ausgedruckt werden –

+1

Siehe was @RacezeQ getan hat. Die beste Methode zum Komprimieren besteht darin, nach dem Namen im Wörterbuch zu suchen und den mit diesem Namen verknüpften Wert zurückzugeben. –

Antwort

1

Sie Ihren Wörterbuch mit Schlüsseln ab kleinen Buchstaben definieren sollte, so dass Sie alle Antworten analysieren können, um Buchstaben zu senken und es auf diese Weise vergleichen:

Horoscopes = { 
    "a": "Scorpio", 
    "b": "Gemini", 
    "j": "Sagittarius", 
    "p": "Gemini", 
} 

def horoscope(name): 
    if name.lower() in Horoscopes: 
     print("Hello " + name + " you are a " + Horoscopes[name.lower()] + "!") 
    else: 
     print("Sorry " + name + ", you are not registered in our system!") 
+0

Wie schreibe ich das "if", wenn der Name nicht im Wörterbuch erscheint, dann wird der Code sonst –

+0

Wenn nicht name.lower() in Horoskope: print ("Sorry" + name + ", Sie sind nicht im System! ") sonst: drucken (" Hallo "+ Name +" du bist ein "+ Horoskope [name.lower()] +"! ") – RaczeQ

0

Dies kann mit etwas erreicht werden like so:

Bitte beachten Sie, dies ist eine Groß-und Kleinschreibung für einen bestimmten Namen in Horoskopen, dh i Wenn ein Name als "Angelina" eingegeben wird, wird er nicht mit dem Wörterbuchschlüssel "Angelina" übereinstimmen. Um dies zu berücksichtigen, wenn Dictionary-Schlüssel bekannt waren, in unteren Fall sein, könnte man die String-Methode verwenden .lower():

name = input("What is your name? ").lower() 

Auf diese Weise unabhängig davon, wie der Name eingegeben wird, gibt es immer noch ein Spiel sein.

Wenn Sie den Benutzer aufgefordert werden wollen, bis ein gültiger Name, dann eingegeben wurde:

horoscopes = { 
    "angelina": "Scorpio", 
    "bernice": "Gemini", 
    "jessica": "Sagittarius", 
    "peniel": "Gemini", 
    } 

print("Welcome to the Horoscope Search!") 

while True: # Until a name is matched to horoscopes 
    name = input("What is your name? ").lower() 

    if name in horoscopes: # If name is a key in horoscopes dict 
     print("Your Horoscope is {}!".format(horoscopes[name])) 
     break # A valid name has been entered, break from loop 
    else: 
     print("Please enter a valid name!") 
Verwandte Themen