【问题标题】:How do I get the user to input an int rather than a float?如何让用户输入 int 而不是 float?
【发布时间】:2020-04-29 14:29:59
【问题描述】:

我正在编写一个程序,该程序在控制台中从用户那里获取一个值,然后我将其转换为 int,如下所示:

num = int(input("Enter a number: "))

我需要我的程序仅与 ints 一起工作。这可以将输入到控制台的实际 int 转换为我可以在程序中使用的 int,但是如果用户输入浮点数,例如 3.1,那么它不会通过截断或舍入来转换为 int。

如何让用户输入 int 而不是 float?或者如何将浮点输入转换为 int?

【问题讨论】:

  • 您好,请设置num = int(round(float(input("Enter a number: ")),0)) 看看。你肯定会得到想要的输出。希望对你有帮助!!!
  • 像魅力一样工作!谢谢。

标签: python floating-point int


【解决方案1】:

您可以使用 try catch 块来确保它们只给您一个int

while True:
    try:
        num = int(input("Enter a number: "))
        #do something with num and then break out of the while loop with break
    except ValueError:
        print("That was not a number, please do not use decimals!")

当 ValueError (当它无法转换为 int 时)被排除时,它会返回询问一个数字,一旦你得到你的号码,你就可以用所说的数字做事,或者然后跳出循环并在其他地方使用 num。

【讨论】:

  • 你错过了break,条约破坏者。
  • 特意看一下里面的评论,你不一定需要中断,你可以在那个循环中做逻辑,然后在什么时候中断你完成了;这完全取决于用户的需要。
【解决方案2】:

您可以使用try except 来测试用户输入是否为整数。示例代码:

while True:
    try:
        value=int(input("Type a number:"))
        break
    except ValueError:
        print("This is not a whole number.")

如果用户输入的不是int,此代码将循环回到开头。

【讨论】:

    【解决方案3】:

    所以像 "3.1" 这样的字符串的 int() 当然不起作用。但是您可以将输入转换为浮点数,然后转换为 int:

    num = int(float(input("Enter a number: ")))
    

    它总是向下取整。如果您希望它在 >= .5 时四舍五入:

    num = float(input("Enter a number: "))
    num = round(num, 0)
    num = int(num)
    

    【讨论】:

      【解决方案4】:

      您可以简单地使用 eval python 内置函数。

      num = int(eval(input("Enter a number: "))).

      对于将字符串转换为 python 代码和评估数学表达式,主要使用 eval 函数。例如,eval("2 + 3") 会给你 5。但是,如果你写 "2 + 3",那么你只会得到 '2 + 3' 作为字符串值。

      【讨论】:

      • 但是eval 使用特别危险。与输入。这不应该被建议。
      【解决方案5】:

      试试:

      num = int(float(input("Enter number: ")))
      

      并且浮点数将四舍五入为int。 如果由于任何原因无法转换数字,您还可以添加一个 try...except 方法给用户错误:

      while True:
          try:
              num = int(float(input("Enter number: ")))
              print(num)
              break
          except ValueError:
              print("This is not a whole number")
      

      【讨论】:

        【解决方案6】:

        使用abs()它返回给定数字的绝对值

        【讨论】:

        • 我试过了,但没用。 num = int(input("输入一个数字:")) num = abs(num).顺便说一句,没有投票给你。
        猜你喜欢
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-18
        相关资源
        最近更新 更多