2016-08-22 9 views
0

私は20の質問のスタイルでクイズを作ります。テキストファイルを使用して、回答に関連するコードを含む辞書を作成します。複数の異なるif文(Python)を凝縮する方法

A1000、ブック

:現時点では唯一の「推測」が、すでに

CODES.txt例の内容を理解することが乱雑とハードを見ていると正確に十分な近ところではない5つの質問を持っています

A1111、ソースパン

コード:

File = open("CODES.txt","r") 
CODES = { } 

for line in File: 
    x = line.split(",") 
    a = x[0] 
    b = x[1] 
    c = len(b)-1 
    b = b[0:c] 
    CODES[a] = b 

print("Think of anything: \n") 

Q1 = str(input("Is it a) An Object, b) A Person, c) A Film: ")) 
if Q1 == "a": 
    Q2 = input("Is it hard: ") 
    if Q2 == "0": 
     Q3 = input("Is it light: ") 
     if Q3 == "0": 
      Q4 = input("Is it smaller than your head: ") 
      if Q4 == "0": 
       Q5 = input("Is it square: ") 
      elif Q4 == "1": 
       Q5 = input("Is it circular: ") 
     elif Q3 == "1": 
      Q4 = input("Is it bigger than your head: ") 
      if Q4 == "0": 
       Q5 = input("Is it square: ") 
      elif Q4 == "1": 
       Q5 = input("Is it circular: ") 
    elif Q2 == "1": 
     Q3 = input("Is it heavy: ") 
     if Q3 == "0": 
      Q4 = input("Is it smaller than your head: ") 
      if Q4 == "0": 
       Q5 = input("Is it square: ") 
      elif Q4 == "1": 
       Q5 = input("Is it circular: ") 
     elif Q3 == "1": 
      Q4 = input("Is it bigger than your head: ") 
      if Q4 == "0": 
       Q5 = input("Is it square: ") 
      elif Q4 == "1": 
       Q5 = input("Is it circular: ") 

CCODE = str(Q1+Q2+Q3+Q4+Q5) 

if CCODE in CODES: 
    print("You are thinking of " + CODES[CCODE]) 
else: 
    NV = str(input("You have outsmarted me. What were you thinking of: ")) 
    File = open("CODES.txt","a") 
    File.write((CCODE+","+NV+"\n")) 
    File.close() 

どのように私は疑問セグメント、if文理解/読みやすくなるだろう。現在、私は埋め込まれたものの負荷があり、それは2/3の答えでそれぞれ5つの質問のみで構成されています。

+0

を:)役に立てば幸い? – danielfranca

答えて

1

私はあなたにいくつかの考えを与えることを試みるが、直接あなたの問題を解決することはできません。

  • はあなたが別の関数の中に置くことができるかについて考えてみてください。これは、何度か繰り返される文には意味をなさないでしょう。
  • 非常に簡単にPython関数から文字列を返すことができます。次に、返された文字列を辞書のキーとして使用できます。
  • また、Pythonではすべてがオブジェクトであるため、他の関数から関数を返す可能性があります。たとえばQ4 = input("Is it smaller than your head: ")については

    は出力"small"obj_size = ask_size()"big"のような文に変えることができます。

私はそれはあなたが多分辞書にあなたの質問の構造を設定

関連する問題