2017-07-27 5 views
0

シンプルなスクリプトを作成しましたが、出力が正しくありません。 これを解決する方法をアドバイスできますか?質問はチェス盤の白いまたは黒い四角についてです: 私は文字列 'd'とint(4)でdefを使用すると、白を返しますが、 は黒になりますか?リストのメンバシップをテストする文の条件が正しく動作しない場合

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2: 
# ___________________________________________________^ 

in、ないisする必要があります:

def in_white(letter,integer): 

    list_letters_1 = ['a','c','e','g'] 
    list_letters_2 = ['b','d','f','h'] 

    list_numbers_1 = [1,3,5,7] 
    list_numbers_2 = [2,4,6,8] 
    print(list_numbers_1) 

    if str(letter) in list_letters_1 and int(integer) in list_numbers_1: 
     print("black") 
    elif str(letter) in list_letters_2 and int(integer) is list_numbers_2: 
     print("black") 
    else: 
     print("white") 

in_white('d',4) 
+0

'int(integer)はlist_numbers_2'が' int(integer)in list_numbers_2'であることが問題です – Alex

+0

これらの回答の1つが役に立った場合は、ありがとう! –

答えて

5

このステートメントは、犯人です。 inがメンバーシップをテストし、isが等価性をテストすることを知っておくべきです。 2つは同じではありません。

0

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:を言うライン - 最後の部分は、あなたがあなたのinテストにタイプミスがありint(integer) in list_numbers_2

0

でなければなりません。この行:

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2: 

は有効なPythonですが、あなたが意味するものではありません。それは次のようになります。

elif str(letter) in list_letters_2 and int(integer) in list_numbers_2: 

isテストは常にFalseになります。

関連する問題