将用户输入转换为数字

2023-09-21 13:26:24

在 Python 3.x 中,input() function将用户输入解析为字符串,即使它只包含数字。

>>> import sys
>>> data=input("Enter a Value: ")
Enter a Value: 100
>>> data
'100'
>>> type(data)
<class 'str'>
>>> data=input("Enter a Value: ")
Enter a Value: Hello
>>> data
'Hello'
>>> type(data)
<class 'str'>

我们如何确保用户的数字输入?最常见的替代方法是使用 int() 函数将 input() 函数的返回值解析为整数

>>> data=int(input("Enter a Number: "))
Enter a Number: 100
>>> data
100
>>> type(data)
<class 'int'>

但是,这很容易出错。如果用户输入非数字数据,则会引发ValueError

>>> data=int(input("Enter a Number: "))
Enter a Number: hello
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    data=int(input("Enter a Number: "))
ValueError: invalid literal for int() with base 10: 'hello'

这可以通过 Python 的异常处理技术来解决。以下代码不断要求用户输入,直到给出整数。

while True:
    try:
        data=int(input("Enter a Number: "))
        print ("You entered: ", data)
        break;
    except ValueError:
        print ("Invalid input")

输出:

Enter a Number: hello
Invalid input
Enter a Number: abcd
Invalid input
Enter a Number: 100
You entered: 100

如果需要输入浮点数,则可以使用内置float()函数。

另一种方法是使用eval()函数。除了此内置函数的其他应用程序外,它是检查输入是否为有效数字的便捷工具。 如果不是,Python 解释器会引发NameError

while True:
    try:
        data=eval(input("Enter a Number: "))
        print ("You entered: ",data)
        break;
    except NameError:
        print ("Invalid input")

输出:

Enter a Number: hello
Invalid input
Enter a Number: abcd
Invalid input
Enter a Number: 12.34
You entered: 12.34

在Python 2.x中将输入转换为数字(Convert Input to Number in Python 2.x)

Python 2.x有两个内置函数用于接受用户输入。 raw_input()input() . input()函数是智能的,因为它判断读取的数据的数据类型,而raw_input()总是将输入视为字符串。 因此,请始终使用 Python 2.x 中的 input() 函数。

>>> data=input("enter something : ")
enter something : 100
>>> data
100
>>> type(data)
<type 'int'>
>>> data=input("enter something : ")
enter something : Hello'
>>> data
'Hello'
>>> type(data)
<type 'str'>

本文内容总结: