【问题标题】:Why doesn't the int() function convert a float to integer while in input() function?为什么 int() 函数在 input() 函数中不将浮点数转换为整数?
【发布时间】:2022-01-25 03:03:49
【问题描述】:

为什么 int() 函数在 input() 函数中不将浮点数转换为整数?

input_1 = input(f'enter the num: ')

try: 
    a = int(input_1)
    print(f"it is an integer")
except:
    print(f"no an integer")
    

input_1 = 3.532453

try: 
    a = int(input_1)
    print(f"it is an integer")
except:
    print(f"no an integer")

结果:

enter the num: 3.532453
no an integer
it is an integer

【问题讨论】:

  • 你能解释一下你的意思吗?
  • 首先,您要尝试制作一个应用程序来检查数字是整数还是浮点数?还有你用的是什么版本的python。
  • @RaedAli 我正在使用 3.9.0 版本的 python

标签: python integer


【解决方案1】:

请记住,当您请求输入时,input_1 值不是浮点数,而是字符串

input_1 = input(f'enter the num: ')
print(type(input_1)) # ​<class 'str'>

因此,通过强制转换,您正在尝试将值为 3.532453 的字符串转换为整数。

如果先将此字符串转换为浮点数,然后再将其转换为整数,它会起作用。

input_1 = input(f'enter the num: ')
try: 
    a = int(float(input_1))
    print(f"it is an integer") 
except: 
    print(f"no an integer")

【讨论】:

    【解决方案2】:

    input 函数返回一个字符串(在 python 中键入str)。 int 函数接受一个字符串,只要该字符串表示一个有效的整数(默认为基数 10)。这意味着当您传递包含. 的字符串时,int 将失败,因为该字符串不是有效的整数。

    >>> input_1 = input(f'enter the num: ')
    enter the num: 3.532453
    >>> print(type(input_1))
    <class 'str'>
    >>> int(input_1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '3.532453'
    

    另一方面,当您执行input_1 = 3.532453 时,您正在创建一个float 类型的变量input_1int 函数接受浮点参数并通过去除浮点部分将它们转换为整数。

    >>> input_1 = 3.532453
    >>> print(type(input_1))
    <class 'float'>
    >>> int(input_1)
    3
    

    【讨论】:

      【解决方案3】:

      print(int(123.456)):您可以将非整数转换为int

      print(int("123456")):可以将表示整数的字符串转换为int

      print(int("123.456")):不能将表示非整数的字符串转换为int

      我的意思是,你可以,但不能直接使用int(...) 操作。

      【讨论】:

        【解决方案4】:

        所以你不能在 python 中将小数更改为 int。 python 中的 int 值是不带小数点的值,例如:3。python 中的浮点值是带小数点的数字,例如:3.141。您还不当使用了tryexcept。此外,输入会自动将输入存储为字符串值,而不是浮点数。 如果要检查用户输入的内容是否为数字,请使用:

        input_1 = input('enter the num: ')
        
        try:
            a = float(input_1)
            print("it is a number")
        except ValueError:
            print("not a number")
        

        【讨论】:

        • you can't change a decimal to an int in python - 这是错误的。在这里查看我的答案。
        • you can't change a decimal to an int in python - 正如bbbbbbbbb 所说:这是错误的,您可以将小数转换为int(当然会丢失小数部分)。关键是input_1 不是小数。
        猜你喜欢
        • 1970-01-01
        • 2022-12-10
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多