有没有办法简化这个if语句:

if self[by1,bx1]=='A' or self[by1,bx1+1]=='A' or self[by1,bx1+2]=='A' or self[by1,bx1+3]=='A':

来自self[y,x]在表中获取数据的类。
原始代码为:
for i in range(4):
                if self[by1,bx1]=='A' or self[by1,bx1+1]=='A' or self[by1,bx1+2]=='A' or self[by1,bx1+3]=='A':
                    print('There is already a ship here')
                    by1=0
                    bx1=0
                    self.placing_Battleship_p1()
                elif by1==0 or by1==0:
                    pass
                else:
                    self[by1,bx1+i]='B'

我要它检查我的表的每个位置是否不等于“A”,然后再将它们改为“B”。

最佳答案

当然,你可以用any来做这个。这应该是等价的。

if any(self[by1,bx1+x]=='A' for x in range(4)):

10-04 13:16