簡體   English   中英

Python檢查列表中的項目是否免費

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM