2017-07-27 46 views
0

我寫了一個簡單的腳本,但輸出不正確。你能不能給我建議如何解決呢 呢?問題是關於國際象棋棋盤上的白色或黑色方塊: 如果我用字符串'd'和int(4)使用def,它將返回白色,但它有 爲黑色?如果聲明條件測試列表成員身份不正常

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(整數)是list_numbers_2'應該是'int(integer)in list_numbers_2'是問題 – Alex

+0

如果其中一個答案有幫助,請隨時繼續並標記它們已被接受。謝謝! –

回答

5

這種說法是罪魁禍首:

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

這應該是in,不is。您應該知道in成員資格測試,而is測試參考資料的等同性。兩者不一樣。

0

,說elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:行 - 最後一部分應該是int(integer) in list_numbers_2

0

您的in測試一個錯字。這行:

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