1
def array_front9(nums):
    end = len(nums)
    if end > 4:
        end = 4

    for i in range(end):
        if nums[i]==9:
            return True
    return False

上記の python コードと、「for ループ」で 2 つの return ステートメントが使用される理由を理解する必要があります。これは私をひどく混乱させます。

4

4 に答える 4

4

これは、次のようにはるかに単純に (つまり、「より Pythonic」に) 書き直すことができます。

def array_front9(nums):
   return 9 in nums[:4]

コードの前半では、ループ制限を最初の 4 つの要素に設定しています。配列numsが短い場合はそれ以下です。 nums[:4]最初の 4 つの要素のみを含むコピーを作成することで、本質的に同じことを行います。

ループは、要素9がループ内にあるかどうかを確認しています。見つかった場合は、すぐに戻りますTrue。見つからない場合、ループは終了し、False代わりに返されます。これはin演算子の手書き形式であり、言語の組み込み部分です。

于 2013-10-30T15:21:20.257 に答える
2

説明させてください:

def array_front9(nums):   # Define the function "array_front9"
    end = len(nums)       # Get the length of "nums" and put it in the variable "end"
    if end > 4:           # If "end" is greater than 4...
        end = 4           # ...reset "end" to 4

    for i in range(end):  # This iterates through each number contained in the range of "end", placing it in the variable "i"
        if nums[i]==9:    # If the "i" index of "nums" is 9...
            return True   # ...return True because we found what we were looking for
    return False          # If we have got here, return False because we didn't find what we were looking for

ループがリターンせずにフォールスルー (終了) した場合に備えて、2 つの return-statement がありますTrue

于 2013-10-30T15:20:05.463 に答える
1

2 番目の戻り値は for ループにはありません。その範囲で 9 に等しくFalseない場合、ループが「失敗」した場合の戻り値を提供します。nums[i]

少なくとも、それはあなたがそれをインデントした方法です。

于 2013-10-30T15:15:31.597 に答える
0

リストスライスを使用して、これをより明確に書き直すことができます。

def array_front9(nums):
    sublist = nums[:4]

    if 9 in sublist:
        return True
    else:
        return False
于 2013-10-30T15:21:41.487 に答える