0
def flips():
        print "Alright the workout of the day is a front-flip, back-flip and
                       side flip"                       
        flips_left = ['side flip', 'front flip', 'back flip']
        flip_choice = None

        while len(flips_left) > 0:
            flip_choice = raw_input("Do a flip ")
            if "side flip" in flip_choice:
                 print flip_lines['side_flip']
                 flips_left.remove('side flip')
                 print "Great! Now just do the rest: %s" % flips_left
             elif "front flip" in flip_choice:
                 print flip_lines['front_flip']
                 flips_left.remove('front flip')
                 print "Good stuff! This is what you have left: %s" %
                                 flips_left
             elif "back flip" in flip_choice:
                 print flip_lines['back_flip']
                 flips_left.remove('back flip')
             else:
              "That is not a type of flip! Try again!"

         print "Great! You completed the WOD!"

この質問は、実際には 2 部構成です。

  1. 私がやっていることは、ユーザーに「サイド フリップ」、「バック フリップ」、または「フロント フリップ」を入力するように指示することです。それらが行われると、入力はリスト「flips_left」から削除されます。ユーザーが同じフリップをもう一度入力するまで、それはうまく機能します。私は、彼らがすでにそれを行ったことを伝えるメッセージを返し、もう一度やり直したいと思っています。

  2. 何らかの理由で、ユーザーが「サイド フリップ」、「フロント フリップ」または「バック フリップ」ではない何かを入力したときに、else ステートメントを出力するプログラムを取得できません。何か案は?ありがとう!

4

2 に答える 2

3

あなたの if ステートメントのロジックは、何が残っているかをチェックしていませんflips_left

あなたの最善の策は、次のようなより一般的なことを行うことです。

if flip_choice in flips_left:
    print flip_lines[flip_choice]
    flips_left.remove(flip_choice)
else:
    print "Some error"

すでに行われた選択を追跡したい場合は、辞書を使用して、どのフリップが既に実行されたかを追跡できます。

flips_left = {'side flip':True, 'front flip':True, 'back flip':True}

...

if flip_choice in flips_left:
    if flips_left[flip_choice]:
        print flip_lines[flip_choice]
        flips_left[flip_choice] = False
    else:
        print "You have already done %s!" % flip_choice
else:
    print "That is not a valid flip"
于 2013-10-01T03:23:17.090 に答える