0
places = ["Jack", "John", "Sochi"]
count=0
multi_word=0
place  = places[count]
while place != "Sochi" and count < len(places):
    if ' ' in place:
        multi_word += 1

    count += 1
    place = places[count]

print ('Number of cities before Sochi:', count)

私のコードは、 Sochi を除く Sochi より前の都市の数を出力する必要があります。この行 (place = places[count]) の意味がわかりません。また、なぜ 2 回必要なのかもわかりません。

4

4 に答える 4

2

foreachはそれをきれいにするでしょう

places = ["Jack", "John", "Sochi"]
count = 0
for place in places:
    if ' ' in place:
        multi_word += 1
    if place == "Sochi":
        break
    count += 1
于 2013-10-14T11:40:55.343 に答える
1

次のwhileループを使用して、ソチの前の場所の数を確認できます。

places = ["Jack", "John", "Sochi"]
count = 0
multi_word = 0
while count < len(places):
    place = places[count]
    if ' ' in place:
        multi_word += 1
    if place == "Sochi":
        break
    count += 1

print('Number of cities before Sochi:', count)

このbreakステートメントは、whileループを終了することを意味します。

于 2013-10-14T11:28:48.263 に答える
1

代わりに、より Pythonic なソリューションを試してみませんか?

places = ["Jack", "John", "Sochi"]

try:
    count = places.index("Sochi")
except ValueError:
    count = len(places)

multi_word = len([place for place in places[:count] if ' ' in place])
于 2013-10-14T11:47:50.870 に答える
1
count=0
place = places[count]

Nowplaceは常にplaces[0]、つまり Jack です。したがって、while ループは 2 番目の条件でのみ終了し、リストの長さは 3 になります。

place = places[count]ループに入るべきです。

于 2013-10-14T11:27:14.113 に答える