2017-07-17 4 views
-1

だから、名前を入力するとその人の星座を示すこの検索機能を作ろうとしています。私はそれを手動で4つの名前で行いました。私が持っている(しかし使用していない)辞書でコードをコンパクトにする方法はありますが、私は覚えていません。pythonコードをコンパクトにするには?


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

あなたは、あなたの問題であり、どのようなあなたの目標はあるが明確でしたあなたは達成するために探しています。 –

+0

こんにちは、私はちょうど1つの "if"と "else"に関数チャンク全体を圧縮することを考えています。だから、おそらく名前が辞書に存在していたら、その人の名前が星座の値と共に印刷されているようなものでしょう。 –

+1

@RacezeQが何をしたかを見てください。最もコンパクトな方法は、辞書内の名​​前を検索し、その名前に関連付けられた値を返すことです。 –

答えて

1

あなたは下の文字にすべての答えを解析し、それをこのように比較することができますので、あなたは、小さな文字から始まるキーを使用して辞書を定義する必要があります。

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

名前を辞書に表示しない場合、コードはelseを実行します –

+0

Horoscopesのname.lower()がない場合: print( "Sorry" + name + "、システムにはありません!」) else: print( "Hello" + name + "あなたは+ Horoscopes [name.lower()] +"! ") – RaczeQ

0

これが何かを達成することができますそのような:

horoscopes = { 
    "Angelina": "Scorpio", 
    "Bernice": "Gemini", 
    "Jessica": "Sagittarius", 
    "Peniel": "Gemini", 
    } 

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

if name in horoscopes: # If name is a key in horoscopes dict 
    print("Your Horoscope is {}!".format(horoscopes[name])) 

すなわち、私、これは星占いで指定された名前のための大文字と小文字を区別チェックですのでご注意ください名前が 'angelina'と入力されている場合、辞書キー 'Angelina'と一致しません。辞書のキーは、ケースであることが知られていた場合、これを考慮するために、1が文字列メソッド.lower()使用していない可能性がありますに関係なく、名前を入力する方法を

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

この方法は、まだ試合があるでしょう。

有効な名前は、その後、入力されたまでは、ユーザーが求められることがしたい場合は:あなたの質問は何の面で完全に明確ではないよう

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!") 
関連する問題