【问题标题】:I can't seem to get this function to repeat itself if the while condition is True如果 while 条件为 True,我似乎无法让此函数重复执行
【发布时间】:2016-02-18 20:00:44
【问题描述】:

我的代码应该接受用户输入的值“n”,该值必须是一个正整数,如果它不是正数或者它是一个字符串而不是一个整数,那么它应该重复输入过程。这是我的代码:

def input_n():
    """obtains n value from user"""
    while True:
        print("Input number of terms n (must be > 0):")
        n = input("> ")
        if not n.isdigit():
            print("Not a usuable n value")
            return None
            continue
        else:
            n = int(n)
            if n < 1:
                print("Not a usuable n value")
                return None
            else:
                return n 

我已经尝试过在第一个 if 循环结束时使用和不使用 continue 语句。如果输入负数或字符串,它似乎永远不会重复。它转到我的代码的下一部分(未显示或未显示)。有谁知道为什么它没有重复,因为 while 循环仍然是 True?

【问题讨论】:

  • 当你做return None时,它已经回到了调用函数。你需要删除它
  • 无论代码中的ifs 引导您到哪里,总会有一个return。此外,contiue 永远无法执行,因为之前有一个 return
  • @kart 谢谢!它起作用了:)我现在看到了,因为条件是 True 我不需要返回 None 因为它会开始 while 循环!

标签: python python-3.x


【解决方案1】:

return 语句结束函数。 因此,当您执行return None 时,它不能在循环中重复,因为它已经不在循环中了。 您可能想使用continue 而不是return None

【讨论】:

    【解决方案2】:

    如果 n 不是数字,看起来你正在返回,这会退出函数。

    【讨论】:

      【解决方案3】:
      def input_n():
          """obtains n value from user"""
          print("Input number of terms n (must be > 0):")
      
          while True:
              n = input("> ")
      
              if not n.isdigit():
                  print("Not a usable value - must be a number!")
                  continue
      
              n = int(n)
              if n < 1:
                  print("Not a usable value - too low!")
                  continue
      
              return n
      

      【讨论】:

        【解决方案4】:

        试试这个

        def input_n():
            print("Input number of terms n (must be > 0):")
            while True:
                n = raw_input("> ")
                if not n.isdigit() or n < 1:
                    print("Not a usuable n value")
                    continue
                else:
                    return n
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-11
          • 1970-01-01
          • 1970-01-01
          • 2012-11-09
          • 2017-12-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多