【问题标题】:How to input negative numbers in python?如何在python中输入负数?
【发布时间】:2022-11-20 08:12:35
【问题描述】:

我正在尝试构建一个简单的游戏,我希望 Python 在玩家输入负数时返回一条消息。我的问题是,当玩家尝试输入负数时,它们会被解释为字符串。

这是我的脚本:

while True:
    user_guess = input("Guess a number: ")
    if user_guess.isdigit():
        user_guess = int(user_guess)
        if user_guess < 0:
            print("Too low, guess a number between 0 and 10.")
        if user_guess > 10:
            print("Too high, guess a number between 0 and 10.")
    else:
        print("It is not a number.")
        break

【问题讨论】:

  • 很确定“isdigit”只检查个位数——如果你去掉那个检查会发生什么?
  • 当您的代码针对各种用户输入运行时,您能否在您的问题中添加您想要的行为的描述/模拟?现在,您的代码成功运行 - 并在用户输入负数或大于 10 的值时正确地将消息打印到屏幕。您还希望您的代码执行哪些它现在没有执行的操作?
  • @爱德华彼得斯The isdigit() method returns True if all the characters are digits, otherwise False.
  • 哈 - 奇怪的名字,但仍然,“-”不是数字所以应该失败,对吧?

标签: python negative-integer


【解决方案1】:

你写的代码不是错误的但它在 Python 中不是很惯用。 LBYL(Look Before You Leap)代码检查以确保在做某事之前可以完成它。 Python 更喜欢 EAFP(比许可更容易请求宽恕),它让你尝试做一件事并在它被抛出时捕获错误。

然后惯用代码只是尝试将输入转换为 int 并注意是否失败。

while True:
    user_guess = input("Guess a number: ")
    try:
        user_guess = int(user_guess)
    except ValueError:
        print("It is not a number.")
        break
    # if we get here, user_guess is guaranteed to be an int
    # and int(user_guess) knows how to parse positive and
    if user_guess < 0:
        print("Too low, guess a number between 0 and 10.")
    elif user_guess > 10:
        print("Too high, guess a number between 0 and 10.")

【讨论】:

    【解决方案2】:
    def input_number(message):
        while True:
            user_guess = input(message)
            try:
                n = int(user_guess)
                if n < 0:
                    print("Too low, guess a number between 0 and 10.")
                elif n > 10:
                    print("Too high, guess a number between 0 and 10.")
                else:
                    return n
            except ValueError:
                print("It is not a number. Try again")
                continue
    
    
    if __name__ == '__main__':
        number = input_number("Guess a number.")
        print("Your number", number)
    

    【讨论】:

      【解决方案3】:
      user_guess = None
      while user_guess is None:
          inp = input("Guess a number: ")
      
          try:
              nr_inp = int(inp)
          except ValueError:
              print("It is not a number.")
              continue
      
          if nr_inp < 0:
              print("Too low, guess a number between 0 and 10.")
          elif nr_inp > 10:
              print("Too high, guess a number between 0 and 10.")
          else:
              user_guess = nr_inp
      
      print("Done:", user_guess)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-12
        • 2013-07-22
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 1970-01-01
        相关资源
        最近更新 更多