[英]Python Check if item in list is free
我有一個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
任何幫助表示贊賞。
即使有點冗長,我還是希望您發布if / elif邏輯,而不是其他任何選項。 您可以將其包裝在函數中,並在需要時直接調用它,這將減少代碼量。
也就是說,您還可以做以下丑陋的事情:
for i in range(-1, 2):
if arr[i-1] == arr[i]:
arr[i+1] = arr[i]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.