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