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



我在python中从用户那里获取输入,如何知道用户已经传递了int或字符串或浮点数等?

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

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

Python提倡"请求宽恕,而不是许可"的方法。所有用户输入可能都是一个字符串 - 特别是如果你从sys.argv获取它 - 但确定这一点的最佳方法是尝试使它们成为数字(使用try/except(,然后恢复到不同的行为如果失败。

num1str, num2str = sys.argv[1], sys.argv[2]
try:
# might as well do float, because every valid integer that can be represented in a 
# string is also a valid float
num1 = float(num1str)
num2 = float(num2str)
num3 = num1 + num2
except ValueError:  
# this happens if the variable cannot be converted, e.g. the user entered something
# that cannot be interpreted as a float
...

有内置的方法:

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'>

我们可以为此使用 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

相关内容

  • 没有找到相关文章

最新更新