如何获取用户已传递数据的对象的类型

时间:2019-12-16 06:38:05

标签: python-3.x types user-input

我在python中接受用户的输入,如何知道用户已传递int或string或float等?

number1 = eval(sys.argv[1])
number2 = eval(sys.argv[2])

如果用户传递的输入是float或int,我想对它们求和,但是如何知道用户传递的数据类型呢?因为用户传递的所有数据的默认类型都是字符串。

3 个答案:

答案 0 :(得分:0)

有内置的方法:

int()
str()

例如,如果可能的话,进行转换,而type()则告诉您它是什么:

x = "Hi there"
print(type(x))

y = 3
print(type(y))
y = str(y)
print(type(y))

收到用户输入后,您可以尝试进行转换,如果成功,请使用转换结果:

_in = input("Some input please  ")

try:
    _in = int(_in)
except:
    try:
        _in = float(_in)
    except:
        pass

print(_in)
print(type(_in))

>>Some input please  3
>>3
>><class 'int'>

>>Some input please  3.5
>>3.5
>><class 'float'>

答案 1 :(得分:0)

Python提倡“请求宽恕,而不是允许”的方法。所有用户输入都可能是字符串-特别是如果您是从sys.argv获取的,则最好的确定方法是尝试使它们成为数字(使用try / {{1 }}),然后在失败的情况下恢复为其他行为。

except

答案 2 :(得分:0)

我们可以为此使用eval()

import sys


def main():
    number1 = eval(sys.argv[1])
    number2 = eval(sys.argv[2])
    print(number1 + number2)


if __name__ == '__main__':
    main()

当用户输入整数作为输入时,input()函数返回一个字符串,但是对于eval(),它将计算从字符串返回的值到整数,与float相同。无需每次都检查数据类型。

请参阅以下链接的第3个数字

https://towardsdatascience.com/python-eval-built-in-function-601f87db191