2014-03-19 90 views
0

對不起,我是新手。我在做什麼錯?和/或在Python

這裏的問題:

編寫一個程序,它的棋盤上的位置爲塔COL和行值行,並檢查該位置是否是有效的。請記住棋盤上的列是從A到H(包含)的字母,行是1到8之間的數字(包含)。 A3或E7是有效輸入,但a1或L5不是。如果兩個座標都是有效的,例如E2,則程序打印'件被移動到E2',否則打印'位置無效'。

這裏是我的代碼:

if row <9 and col == 'A' or col == 'B' or col == 'C' or col == 'D' or col == 'E' or col == 'F' or col == 'G' or col == 'H': 

    print "The piece is moved to",col,row,"." 
else: 

    print "The position is not valid." 

提前感謝!

+0

這不是問題,但是你所有的'col =='''都可以用''A','B','C','D','E' 'F','G','H']'(或列在列表中('ABCDEFGH')') 。 – NullUserException

回答

1

把一些括號,以確保所有的列檢查處理與該行查詢:

if row <9 and (col == 'A' or col == 'B' or col == 'C' or col == 'D' or col == 'E' or col == 'F' or col == 'G' or col == 'H'): 

    print "The piece is moved to",col,row,"." 
else: 

    print "The position is not valid." 

順便說一句,你的代碼不檢查列= 0,和一個簡單的方法是說:

if (row in range(1,9) and col in "ABCDEFGH"): 

可以打印字符串使用起來既.format()%操作:

print "The piece is moved to {}{}.".format(col,row) 

print "The piece is moved to %s%d." % (col,row) 
+0

謝謝!無論如何刪除col和row之間的空白? – ZoeIngrid

+0

請注意,即使「col」爲「ABC」,「ABCDEFGH」中的「col」也起作用。當然,如果你確定你的輸入是單個字符,你不必擔心這一點。 – NullUserException

+0

確實,無效。如果他們想確保他們可以在列表中(「ABCDEFGH」)說',但這似乎不大可能。 – beroe

0

你必須使用括號

+0

謝謝:) :) :) – ZoeIngrid

0

你忘了括號!你需要他們,因爲像數學一樣,它會先做括號中的所有事情,然後再做別的事情。