我在python中接受用户的输入,如何知道用户已传递int或string或float等?
number1 = eval(sys.argv[1])
number2 = eval(sys.argv[2])
如果用户传递的输入是float或int,我想对它们求和,但是如何知道用户传递的数据类型呢?因为用户传递的所有数据的默认类型都是字符串。
答案 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