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 循环,但我不完全确定),以便在一个函数完成后,它会返回到顶部,所以用户可以输入一个新的函数号并做一个不同的方程。我该怎么做?过去半个小时我一直在想办法,但什么都没有出现。

尝试忽略代码中的任何混乱......它需要一些清理。

4

3 回答 3

6

最好使用while-loop 来控制重复,而不是for-loop。这样用户就不会被限制在固定的重复次数上,他们可以随心所欲地继续。为了退出,用户输入一个 <= 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.: "))

注意:如果您要迭代已知/固定次数,例如在序列(如列表)上,或者如果您想以某种方式限制重复,for则 -loop 是最合适的。为了给您的用户更多的灵活性,-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 回答