0

関数の先頭に戻ろうとしています (再起動するのではなく、先頭に移動します) が、これを行う方法がわかりません。長いコードを提供する代わりに、私が欲しいものの例を作るつもりです:

used = [0,0,0]  
def fun():
   score = input("please enter a place to put it: ")
   if score == "this one":
      score [0] = total
   if score == "here"
      if used[1] == 0:
        score[1] = total
        used[1] = 1
      elif used[1] == 1:
        print("Already used")
        #### Go back to score so it can let you choice somewhere else. 
  list = [this one, here]

戻ることができるようにする必要があるため、基本的に、メモリを消去せずに「ここ」を再度使用しようとしたことを忘れてしまいます。それらがひどいことは知っていますが、基本的には行く必要がありますが、Pythonには存在しません。何か案は?

*編集: 申し訳ありませんが、既に使用されている場合は、別の場所を選択できるようにする必要があることを忘れていました (コードを行き詰まらせたくありませんでした)。score == "this one" を追加しました。つまり、"here" に入れようとすると、"here" は既に使用されているため、score = input("") をやり直すオプションが表示され、それから取ることができます。その値を「ここ」ではなく「これ」に挿入します。あなたのループステートメントは先頭に戻りますが、見つけたばかりの値を別の場所に置くことはできません。これが理にかなっていることを願っています:p

4

2 に答える 2

5

あなたが探しているのはwhileループです。場所が見つかるまでループを続けるように設定します。このようなもの:

def fun():
    found_place = False
    while not found_place:
        score = input("please enter a place to put it: ")
        if score == "here"
            if used[1] == 0:
                score[1] = total
                used[1] = 1
                found_place = True
            elif used[1] == 1:
                print("Already used")

そうすれば、場所を見つけたら、ループを停止する場所を設定found_placeします。True場所が見つからない場合は、found_place残りFalse、ループを繰り返します。

于 2013-04-27T20:12:39.820 に答える
1

Ashwini が正しく指摘しているように、whileループを実行する必要があります。

def fun():
  end_condition = False
  while not end_condition:
    score = input("please enter a place to put it: ")
    if score == "here":
      if used[1] == 0:
        score[1] = total
        used[1] = 1
      elif used[1] == 1:
        print("Already used")
于 2013-04-27T20:11:26.467 に答える