0

一般的に、Python/プログラミングはかなり新しいものですが、これは私の最大のプロジェクトです。

SUVAT 方程式を実行するプログラムを作成しています。(SUVAT 方程式は、一定速度のオブジェクトが移動する変位、開始/終了速度、加速度、および時間を見つけるために使用されます。別の呼び方をすることもできます。)

私はこのリストを作りました:

variables = ["Displacement", "Start Velocity", "End Velocity", "Acceleration", "Time"]

これは、次の while/for ループで使用されます。

a = 0
while a==0:
  for variable in variables:

    # choice1 is what the user is looking to calculate
    choice1 = raw_input("Welcome to Mattin's SVUVAT Simulator! Choose the value you are trying to find. You can pick from " + str(variables))

    # will execute the following code when the for loop reaches an item that matches the raw_input
    if choice1 == variable: 
        print "You chave chosen", choice1
        variables.remove(variable) #Removes the chosen variable from the list, so the new list can be used later on
        a = 1 # Ends the for loop by making the while loop false

    # This part is so that the error message will not show when the raw_input does not match with the 4 items in the list the user has not chosen
    else:
        if choice1 == "Displacement":
            pass
        elif choice1 == "Start Velocity":
            pass
        elif choice1 == "End Velocity":
            pass
        elif choice1 == "Acceleration":
            pass

        # This error message will show if the input did not match any item in the list
        else:
            print "Sorry, I didn't understand that, try again. Make sure your spelling is correct (Case Sensitive), and that you did not inlcude the quotation marks."

コードに書いたコメントが私の意図を説明していることを願っています。そうでない場合は、お気軽にお問い合わせください。

問題は、コードを実行して Choice1 を入力すると、for ループがコードの最後の行をアクティブにすることです。

else:
    print "Sorry, I didn't understand that, try again. Make sure your spelling is correct (Case Sensitive), and that you did not inlcude the quotation marks."

次に、入力を再度入力するように求められ、入力しているリストの項目に到達するのに必要な回数だけこれを行います。

ただし、入力内容が for ループで現在チェックしているリストの項目と一致しないが、リストの他の項目の 1 つと一致する場合は、パスして次の項目のチェックにループするように具体的にコーディングしました。

私はおそらく何かばかげたことをしているのですが、それが見えないので、望ましい結果を得るために何をしなければならないかを理解するのを手伝ってください。間違った構文だと思ったので、それがタイトルです。

助けてくれてありがとう、感謝します。

4

1 に答える 1

2

貼り付けたコードのインデントの問題に加えて、次のように書き直します。

while True:
    choice = raw_input('...')

    if choice in variables:
        print "You chave chosen", choice

        # Remove the chosen member from the list
        variables = [v for v in variables if v != choice]

        # Break out of loop
        break

    # Print error messages etc.

また、文字列比較では大文字と小文字が区別されることに注意してください。すなわち'Displacement' != 'displacement'

于 2012-08-07T10:46:10.437 に答える