2017-02-05 23 views
0

私はPythonを初めて使っていますが、次のコードを書いていますが、Bを入力するとスコアが減少しません。こんにちはなどが入力されていますが、Bが入力された場合は入力されず、Bが入力された場合はスコアが減少しません。誰も助けることができます。Pythonのif文を使用してListの内容をチェックする方法

グリッド= [8、 "B"、 "どのように"、 "こんにちは"、 "ねえ"、 "どのようにそれが起こっている"、 "どのようにあなたがやっている"、 "どのように"、 "こんにちは"]

def Play(): 
    count=0  
    score=0  
    while (count<11): 
     I=input("Enter your guess") 
     if I in grid: 
      score+=1 
      print("Your score is:", score) 
     elif I in grid == "B": 
      score=0 
      print("Your score is:",score) 
     else: 
      print("I don't understand") 
     count+=1 
+0

'elifのI ==:

grid=["8","B","How", "Hi", "Hey", "How are you doing", "How's it going", "How", "Hello"] 

を最初if文でI == "B"かどうかを確認:

これを実現する簡単な方法は、グリッド'で"8"8を変更することです"B": '意味がありません。グリッドからBを取り出し、別のリストに入れます。さもなければ、 'elif Iがグリッドにあり、I == 'B':'またはそれと同様のものが必要です。これは設定としては直感的です。 – roganjosh

+0

'I in grid'は' bool'を返します。あなたは「私がグリッドにいるなら...」(「True」または「False」を返す)が文字Bと等しいことを要求しています。 'True'と' False'は文字Bと同じではありません。 – roganjosh

答えて

1

input()は、入力を文字列として格納します。したがって、ユーザが8と入力すると、"8"という名前で保存されます。 "8"8と同じではないため、if I in gridFalseと評価されます。これを解決するには、リスト内の8"8"に変更するか、またはelif I == "8":

elif I in grid == "B":をtrueに評価することはできません。これは、(I in grid) == ("B")をチェックしているためです。 I in gridは常にTrueまたはFalseになるので、"B"とブール値を比較すると、常にFalseとなります。グリッド内

if I in grid: 
    if I == "B": 
     score=0 
    else: 
     score+=1 
    print("Your score is:",score) 
else: 
    print("I don't understand") 
+1

コメントしていないことが1つありました。これは注目に値するかもしれません。グリッド内の「elif I」==「B」:最初の「True」で分割されているので、OPのアプローチでは決して評価されません評価。 – roganjosh

関連する問題