2

これは二刀流の質問のようなものですが、私は困惑しています。現在、次のコードがあります。

from __future__ import division
import math

function = int(raw_input("Type function no.: "))


if function == 1:
    a = float(raw_input ("Enter average speed: "))
    b = float(raw_input ("Enter length of path: "))
    answer= float(b)/a
    print "Answer=", float(answer),

elif function == 2:
    mass_kg = int(input("What is your mass in kilograms?" ))
    mass_stone = mass_kg * 2.2 / 14
    print "You weigh", mass_stone, "stone."

else: print "Please enter a function number."

さて、私はある種のループを持ちたいと思っています (私はそれが for ループだと推測していますが、完全にはわかりません) 関数が完了した後、それはトップに戻るので、ユーザーは新しい関数番号を入力して、別の方程式を実行できます。どうすればいいですか?私は過去30分間方法を考えようとしてきましたが、何も思いつきません.

コードの乱雑さを無視するようにしてください...クリーンアップが必要です。

4

3 に答える 3

6

while-loop ではなく、 -loopを使用して繰り返しを制御することをお勧めしforます。このようにして、ユーザーは固定回数の繰り返しに制限されず、好きなだけ続けることができます。終了するには、ユーザーは値 <= 0 を入力します。

from __future__ import division
import math

function = int(raw_input("Type function no.: "))

while function > 0:
    if function == 1:
        a = float(raw_input ("Enter average speed: "))
        b = float(raw_input ("Enter length of path: "))
        answer = b/a
        print "Answer=", float(answer),
    elif function == 2:
        mass_kg = int(input("What is your mass in kilograms?" ))
        mass_stone = mass_kg * 2.2 / 14
        print "You weigh", mass_stone, "stone."

    print 'Enter a value <= 0 for function number to quit.'
    function = int(raw_input("Type function no.: "))

これは、必要に応じて調整できます (終了条件など)。たとえば、0 が唯一の終了値などになるように指定できます。

別の方法として、「永久に」実行され、特定の関数番号が指定された場合に中断するループがあります (この例では0)。このアプローチのスケルトン/スケッチを次に示します。

    function = int(raw_input("Type function no.: "))

    while True:
       if function == 1:
          ...
       elif function == 2:
          ...
       elif function == 0:
          break      # terminate the loop.

      print 'Enter 0 for function number to quit.'
      function = int(raw_input("Type function no.: "))

: -loop は、たとえばシーケンス (リストなど) を反復する場合や、何らかの方法で反復を制限したい場合など、既知/固定の回数反復するfor場合に最も適しています。ユーザーに柔軟性を与えるために、ここでは -loop がより良いアプローチです。while

于 2012-08-06T22:43:57.200 に答える
2

スクリプト全体をループ内にラップするだけです。次に例を示します。

from __future__ import division
import math

for _ in range(10):

    function = int(raw_input("Type function no.: "))


    if function == 1:
        a = float(raw_input ("Enter average speed: "))
        b = float(raw_input ("Enter length of path: "))
        answer= float(b)/a
        print "Answer=", float(answer),

    elif function == 2:
        mass_kg = int(input("What is your mass in kilograms?" ))
        mass_stone = mass_kg * 2.2 / 14
        print "You weigh", mass_stone, "stone."

    else: print "Please enter a function number."

これにより、if ステートメントが 10 回連続して実行されます。

于 2012-08-06T22:42:15.263 に答える
2

私はこれを試してみます:

while True:
    function = ...
    if function == 0:
        break
    elif ...
于 2012-08-06T22:42:39.923 に答える