当前位置: 首页 > 知识库问答 >
问题:

我怎样才能回到循环的开始?

田权
2023-03-14

如果我的问题看起来很长,我道歉。我会尽量简明扼要。

问题:编写一个程序,将以千克为单位的估算重量转换为磅。如果用户输入负值,程序应要求玩家重新输入数字。

我创建了三个函数。第一个函数-返回玩家输入第二个函数-返回以磅为单位的权重第三个函数-如果权重为正,返回以磅为单位的值,或者如果值为负,要求另一个输入。

 # function that asks for player input in kg
    def weight_input () :
      return float (input ("Enter valid weight: "))

    weight_kg = weight_input()

    # formula to convert kg into pounds
    def weight_conversion():
      return 2.2 * weight_kg

    weight_pds = weight_conversion ()

    def weight_info () :
      while True :
        weight_kg
        if weight_kg > 0 : # if weight > 0 we return the weight in pds
          return weight_pds
        else :
          print("Invalid weight.")
          continue  # go back to the start of the loop and ask for input
      return weight_pds

    print (weight_info () )

如果相同的值为正数,我的程序将返回正确的值。然而,当我输入一个负浮点数时,我的程序将永远打印“无效权重”。有人告诉我,每当我在一个循环中写continue时,我都会返回到同一个循环的开头,但是我不能停止我的程序。

共有2个答案

翟修明
2023-03-14

continue语句仅用于跳过当前迭代循环中的其余代码。循环不会终止,但会继续进行下一次迭代。

break语句终止包含它的循环。程序的控制在循环体之后立即流向语句。如果break语句位于嵌套循环内(另一个循环内的循环),break将终止最内层的循环。

因此,在您使用continue的情况下,您只需返回,而仍有错误的输入。

您要求输入一次,当输入错误时,您需要再次要求输入。

窦哲彦
2023-03-14

打印“无效重量”的原因永远,因为您只接受一次输入,并且每次都使用它,即每次输入后,重量永远不会更新。

试码

# function that asks for player input in kg
def weight_input () :
  return float (input ("Enter valid weight: "))


# formula to convert kg into pounds
def weight_conversion(weight_kg):
  return 2.2 * weight_kg

def weight_info () :
  while True :
    weight_kg = weight_input()
    if weight_kg > 0 : # if weight > 0 we return the weight in pds
      return weight_conversion (weight_kg)
    else :
      print("Invalid weight.")
      continue  # go back to the start of the loop and ask for input
  return weight_pds

print (weight_info () )

提示:如果使用函数,不要使用全局变量。它们将保留最后的值,如果您的代码需要在每次调用中更改/重置它们,则更喜欢使用函数参数

 类似资料:
  • 如何获取已设置为ImageView的可绘图文件的名称?

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 我使用Selenium,需要无休止地等待页面加载(因为加载需要几个小时),然后解析其中的数据。我该怎么做? 我使用这样的一些代码:

  • 当我使用jsole访问weblogic的mbean时,我只能得到一些关于jvm的信息,比如“java.lang”。但是我想得到的是关于“jdbc”、“jta”、“ejb”、“servlet”... 我想知道是否可以通过服务获得这些指标:jmx:rmi:///jndi/rmi://10.0.99.102:7997/jmxrmi使用用户名和密码。我认为我的配置很可能有错误,但我不知道问题出在哪里。 然

  • 我有一个关于寻找矩形(曲线上方)的区域的问题。我想找到类似于,其中。 我有两个(x;y)的,可以找到: ) 我的问题是:如果我没有函数,但有(x;y),如何使用数值积分。例如,在matlab中,: 在C++中,我有:

  • 问题内容: 我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。 在Angular中,看起来像指令是执行此操作的地方?所以我有: …但是该方法不属于元素: 我把指令与 有什么建议么? 问题答案: “当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” - …并且能够在没有指令的