【问题标题】:How to only accept integer between 3-8 and not strings? (Python 2.7.5)如何只接受 3-8 之间的整数而不接受字符串? (Python 2.7.5)
【发布时间】:2013-11-19 02:03:15
【问题描述】:

我正在尝试创建一个请求 3-8 之间的整数的函数,并将继续询问直到用户输入 3-8 之间的整数。所以它会再次询问您是否输入 0、-1、9 或“兔子”。

到目前为止,我有这个:

def GetNumberOfColours():
    NumberOfColours = None
    while type(NumberOfColours) != int or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
        print "Please enter the amount of colours you would like to play with (min 3, max 8)."
        NumberOfColours = raw_input()
    NumberOfColours = int(NumberOfColours)

但是这段代码目前无法工作,因为它接受原始输入并且不会将其视为整数。但是如果我使用 input() 那么它不会接受可以输入的字符串并停止代码。 我怎样才能做到这一点?

【问题讨论】:

    标签: python python-2.7 while-loop conditional-statements


    【解决方案1】:

    将此用于您的 while 行:

    while !NumberOfColors.isDigit() or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
    

    【讨论】:

      【解决方案2】:

      您需要缩进最后一行以使脚本反复将输入转换为整数。

      然后您会发现输入“rabbits”将产生ValueError,因为int() 无法将其转换为数字。这可以通过try/except 处理:

      def GetNumberOfColours():
          NumberOfColours = None
          while type(NumberOfColours) != int or int(NumberOfColours) < 3 or int(NumberOfColours) > 8:
              print "Please enter the amount of colours you would like to play with (min 3, max 8)."
              NumberOfColours = raw_input()
              try:
                  NumberOfColours = int(NumberOfColours)
              except ValueError:
                  NumberOfColours = None
      

      【讨论】:

        【解决方案3】:

        type(NumberOfColours) 将始终为str(或在第一次运行时为NoneType),因为raw_input() 返回一个字符串。

        你应该这样做:

        def get_number_of_colours():
            while True:
                print "Please enter the amount of colours you would like to play with (min 3, max 8):",
                try:
                    num_colours = int(raw_input())
                except ValueError:  # gets thrown on any input except an integer value
                    continue
                if 3 <= num_colours <= 8:
                    return num_colours
        

        【讨论】:

          猜你喜欢
          • 2013-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-14
          • 1970-01-01
          相关资源
          最近更新 更多