2014-03-19 41 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

你忘了括号!你需要他们,因为像数学一样,它会先做括号中的所有事情,然后再做别的事情。