places= ["Home","In-n Out Burger", "John's house", "Santa Monica Pier", "Staples center", "LA Dodgers stadium", "Home"]
def placesCount(places):
multi_word = 0
count = 0
while True:
place = places[count]
if ' ' in place and place!='LA Dodgers stadium' **""" or anything that comes after LA dodgers stadium"""** :
multi_word += 1
if '' in place and place!='LA Dodgers stadium' """ **or anything that comes after LA dodgers stadium**""":
count += 1
print (count, "places to LA dodgers stadium"), print (multi_word)
placesCount(places)
我基本上想知道在这种情况下,当它到达列表的某个元素(“LA Dodgers Stadium”)时,如何阻止while循环添加到列表中。它不应该在到达列表的元素后添加任何内容。我知道我之前问过这个问题,但我没有收到正确答案。
答案 0 :(得分:4)
您可能希望改变循环条件。而不是while True
尝试:
place = places[0]
while place != "LA Dodgers Stadium" and count < len(places):
if ' ' in place:
multi_word += 1
count += 1
place = places[count]
编辑:可能更好的写作方式可能是:
for place in places:
if place == "LA Dodgers Stadium": break
if ' ' in place: multi_word += 1
答案 1 :(得分:0)
(伪代码)
flag = true
while (flag)
...
if (place == LA Dodgers stadium)
{
flag = false
}
答案 2 :(得分:0)
running = True
while running:
user_input = raw_input("cmd> ")
if user_input == "q":
running = False
或强> 的
while True:
user_input = raw_input("cmd> ")
if user_input == "q":
break
答案 3 :(得分:0)
嗯,这种简单事情的最快捷方式是:
places.index('LA Dodgers Stadium')
如果它不存在则会引发ValueError异常,但如果是,则返回索引。那么你可以做到
while count < dodgersindex:
为你的循环。更好的是,你可以这样做:
while place in places[:dodgersindex]:
可让你直接处理单词,而不是索引 - 更多pythonic。
作为一般情况。您可以使用continue
或break
来中断执行......区别是这样的:
x = -1
while x < 100:
x += 1
if x % 2 == 0:
continue
if somearray[x] > 100:
break
继续意味着'不要尝试其余的循环迭代,继续下一个' - 对于第一个项目,它将检查是否x%2 == 0
,看到它是否存在,而不是甚至看看是否somearray[x] > 100
。但它只会进入下一个条目(这将导致x增加到1)。但是,中断将导致整个循环退出...如果在条目51,我们发现somearray[51] > 100
,我们将不会检查其余项目,但会立即退出。
答案 4 :(得分:0)
当我在上一个问题中读到你时,print(placesCount)
无法正常工作,因为placesCount是一个不返回任何内容的函数。并且您正在尝试打印函数对象而不是函数返回的函数。
在函数末尾添加return
。应该管用。
print语句应该是print(placesCount(argument))
但是,我建议你不要用文件迭代你的列表来实现你现在正在做的事情。
您可以使用列表推导来完成此操作。这通常比手动循环列表更快。
def placesCount(places):
last_index = places.index('LA Dodgers stadium')
multi_word = len([item for item in places[:last_index] if ' ' in item])
count = len(places[:last_index])
return count + "places to LA dodgers stadium\n" + (multi_word)
print(placesCount(places))
如果你想使用while循环。
def placesCount(places):
count = 0
while True:
place = place[count]
multi_word += 1 if ' ' in place else 0
if place == 'LA Dodgers stadium':
break
count +=1
return count + "places to LA dodgers stadium\n" + (multi_word)
print(placesCount(places))