簡體   English   中英

如何減少代碼中 if 語句的數量?

[英]how do i reduce the amount of if statements in my code?

所以我的代碼有很多 if 語句:

            rnrp += 1
        if a100 == b100:
            rnrp += 1
        if a10 == b10:
            rnrp += 1
        if a1 == b1:
            rnrp += 1

和:

            if b1000 == a100:
                rnwp += 1
                break
            if b1000 == a10:
                rnwp += 1
                break
            if b1000 == a1:
                rnwp += 1
            break
        while true:
            if b100 == a1000:
                rnwp += 1
                break
            if b100 == a10:
                rnwp += 1
                break
            if b100 == a1:
                rnwp += 1
            break
        while true:
            if b10 == a1000:
                rnwp += 1
                break
            if b10 == a100:
                rnwp += 1
                break
            if b10 == a1:
                rnwp += 1
            break
        while true:
            if b1 == a1000:
                rnwp += 1
                break
            if b1 == a100:
                rnwp += 1
                break
            if b1 == a10:
                rnwp += 1
            break 

如您所見,這是很多 if 語句,第一個很好,但第二個需要改進。 同樣,第二個代碼試圖完成的是檢查 b 的每個位置(100 的位置、100 的位置、10 的位置等)與 a 的任何位置匹配。 如何減少代碼第二部分中 if 語句的數量? 這篇文章已由 jasonharper 回答(我現在找不到按鈕,所以我只是把它放在問題中)謝謝!!

您可以使用listdict類的集合來減少操作次數。 例如,

    while true:
        if b100 == a1000:
            rnwp += 1
            break
        if b100 == a10:
            rnwp += 1
            break
        if b100 == a1:
            rnwp += 1
        break

可能

        if b100 in [a1000, a10, a1]:
            rnwp += 1

由於您經常重復這些模式中的一些,您可以事先制作一些這些列表並重復使用它們。 使用字典甚至可能很有用,這樣您就不必單獨記住變量。

使用 elif 語句。 除此之外,您在那里無能為力。 使用許多 if 語句可能會令人困惑,但只要您的代碼是干凈的,您就可以將其關閉。

我會縮短它的方式:

Boolean_value = True
while Boolean_value:
    if b100 == a1000: rnwp, Boolean_value = rnwp + 1, False 
    if b100 == a10: rnwp, Boolean_value = rnwp + 1, False 
    if b100 == a1: rnwp, Boolean_value = rnwp + 1, False 

如果你想要一個 if 語句並且 if 語句只有一個表達式,它非常有用。 您也可以在一行中更改多個值。

您可以使用 itertools 中的 product 並在一行中完成所有操作:

from itertools import product 

rnwp += sum(b==a for b,a in product([b1000,b100,b10,b1],[a1000,a100,a10,a1]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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