我有一个array
,其中包含9个char变量。我使用for
循环将它们打印成3行。我想检查一行中3个变量中的2个是否相同,并创建将改变第三个变量以匹配其他变量的函数。
我想垂直和水平都这样做。
我是否必须将数组更改为 2D数组?这会让我改变近一半的代码。
我是否有可能不必像这样手动编写if
语句:
if array[0] == array[1]:
change the_third_var
elif array[1] == array[2]:
change the_first_var
elif array[0] == array[2]:
change the_sec_var
但它会使用for
或任何其他循环自动检查它吗?
该解决方案是否可以帮助我简化下面的代码(可选)?
def check_winner(pl_array, player_choice, computer_choice):
vertical = [2, 5, 8]
diagonal = [6, 7, 8]
# checking vertical lines
for each in vertical:
if pl_array[each - 2] == pl_array[each - 1] == pl_array[each]:
if pl_array[each] == player_choice or pl_array[each] == computer_choice:
return True
# checking diagonal lines
for every in diagonal:
if pl_array[every - 6] == pl_array[every - 3] == pl_array[every]:
if pl_array[every] == player_choice or pl_array[every] == computer_choice:
return True
# across
if pl_array[8] == pl_array[4] == pl_array[0]:
if pl_array[8] == player_choice or pl_array[8] == computer_choice:
return True
elif pl_array[6] == pl_array[4] == pl_array[2]:
if pl_array[6] == player_choice or pl_array[2] == computer_choice:
return True
else:
return False
任何帮助表示感谢。
答案 0 :(得分:1)
即使它有点冗长,我宁愿使用你发布的if / elif逻辑,而不是任何其他选项。您可以将其包装在一个函数中,只需在需要时调用它就可以减少代码量。
那就是说,你也可以做以下丑陋的事情:
for i in range(-1, 2):
if arr[i-1] == arr[i]:
arr[i+1] = arr[i]