0
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 ドジャース スタジアム」) に達したときに、while ループがリストに追加されないようにする方法を知りたいです。リストのその要素に到達した後は、何も追加しないでください。以前にこの質問をしたことは知っていますが、適切な回答が得られませんでした。

4

5 に答える 5

0

前の質問で読んだように、print(placesCount)placesCount は何も返さない関数であるため、機能しません。そして、関数が返すものではなく、関数オブジェクトを出力しようとしています。

return関数の末尾にa を追加します。動作するはずです。そして、印刷ステートメントは次のようになります。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))
于 2013-10-09T20:36:11.097 に答える
0

(疑似コード)

flag = true

while (flag)
    ...
    if (place == LA Dodgers stadium)
    {
        flag = false
    }
于 2013-10-09T20:19:45.530 に答える