将for循环集成到if语句中

dan*_*tdj 2 python for-loop

这是一个双重问题,但它让我感到困惑.我目前有以下代码:

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."
Run Code Online (Sandbox Code Playgroud)

现在,我想要一些循环(我猜它是一个for循环,但我不完全确定)所以在一个函数完成后,它会返回到顶部,所以用户可以输入新的函数编号并执行不同的等式.我该怎么做?我一直试图想办法过去半小时,但没有任何事情发生.

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

Lev*_*von 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.: "))
Run Code Online (Sandbox Code Playgroud)

您可以根据需要调整此(例如,终止条件).例如,您可以指定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.: "))
Run Code Online (Sandbox Code Playgroud)

注意:for如果您正在迭代已知/固定次数(例如,通过序列(如列表)),或者您希望以某种方式限制重复,则A -loop是最合适的.为了给您的用户更多的灵活性,whilealo是一种更好的方法.