簡體   English   中英

Python,嘗試計算列表中的某些項目,然后停止但循環卡住了

[英]Python, trying to count some items in a list then stop but loop gets stuck

我有一個程序,其中有一個列表,而且您必須計算單詞的數量,直到“ sam”一詞包括在內。

import random

def sumWords(list):
    numWords = 0
    for i in list:
        if i != "sam":
            numWords += 1
    return numWords

wordList=["plant", "dog", "sam", "rose", "monkey", "happy", "coral"]    
print(sumWords(wordList))

但這只算是Sam的所有話。

我試了一段while i != "sam":而不是if但這使它陷入了無限循環。

感覺就像我在這里錯過了一些簡單的事情。 不過請記住,我在Python方面還比較陌生。

i =="sam"時,可以使用簡單的break語句。 這將確保您的循環只會迭代到sam ,而不是整個列表。

def sumWords(list):
    numWords = 0
    for i in list:
        numWords += 1 # Increment in each iteration.
        if i == "sam": # if condition matches, break from the loop
            break 
    return numWords

用法:

print sumWords(wordList)

輸出:

3

實際上,您不需要此功能。 找到單詞的索引,然后加1以包括該單詞。

 wordList.index('sam') + 1

您的for循環不會中斷,因此您只需對單詞數進行計數,直到列表末尾。 您應該做的是在達到等於"sam"時跳出循環,只需要將代碼重寫為此:

for i in list1:
    numwords += 1
    if i == "sam":
        break

您的代碼不會在sam停止計數,而是會跳過它。 您應該反轉if子句並break

def sumWords(my_list):
    numWords = 0
    for i in my_list:
        numWords += 1
        if i == "sam":
            break
    return numWords

而且,您可以通過以下方式簡化功能:

def sumWords_simple(my_list):
    return my_list.index('sam')+1

index返回列表中第一個sam的第一個索引。 Python是zero-based索引。 沒有+1 ,它等於和不等於sam 使用+1 ,將包括首個sam

for循環中,更改if語句

def sumWords(list):
    numWords = 0
    for i in list:
        numWords += 1
        if i=='sam':
            break
    return numWords

暫無
暫無

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

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