isinstance() 函数是否不足以检测整数和浮点数?
Is isinstance() function not enough to detect integers and floats?
我正在制作一个非常基本的计算器作为我的第一个项目(我正在学习 Python 并且想要一些东西来展示我到目前为止学到的东西)并且现在,该程序可以运行很好。
现在,我有一个功能来验证用户输入,这样代码只接受数字和小数点,并且return将输入作为要计算的浮点值。
不过,我想做到这一点,以便代码可以识别用户输入的是整数值还是浮点值,这样像“2+2”这样的简单操作就不会return 浮点数“4.0”结果,只有“4”。
我现在正在使用的功能如下:
def valid_num():
number = ''
valid = True
while valid:
try:
number = float(input('───→ '))
break
except ValueError:
print('')
print('Invalid input (numbers and decimal points only).')
return number
为了能够区分整数和浮点值,我查找了一些方法并找到了 isinstance() 函数,我可能没有正确应用它...这是我正在尝试使用的函数:
def valid_num():
number = ''
valid = True
while valid:
number = input('───→ ')
check_int = isinstance(number, int)
if check_int:
number = int(number)
break
check_float = isinstance(number, float)
if check_float:
number = float(number)
break
if not check_int and not check_float:
print('Invalid input (numbers and decimal points only).')
return number
抱歉,如果我没有看到明显的错误,我才刚刚开始编码...在此先感谢您提供的任何帮助 =D
正如@tim-roberts 所指出的,isinstance(number, int)
检查 number
的类型,它是一个字符串。
要区分整数和浮点数,您有两种选择:
尝试转换为int
,如果失败尝试转换为float
;这将使用一对 try
/except
子句。
将输入验证为文本,检查它是否符合您为计算器设置的规则,可能使用正则表达式;这会让你肯定地断言它符合你的期望,而不是 int
和 float
函数接受的任何东西。
您也可以在 float
(或 Decimal
)中完成整个工作,然后在输出时将 4.0
转换为 4
;这意味着您还将获得“0.5 * 8”的“4”(这可能比获得“4.0”更好或更差;这取决于您的用户体验设计)。
我正在制作一个非常基本的计算器作为我的第一个项目(我正在学习 Python 并且想要一些东西来展示我到目前为止学到的东西)并且现在,该程序可以运行很好。
现在,我有一个功能来验证用户输入,这样代码只接受数字和小数点,并且return将输入作为要计算的浮点值。
不过,我想做到这一点,以便代码可以识别用户输入的是整数值还是浮点值,这样像“2+2”这样的简单操作就不会return 浮点数“4.0”结果,只有“4”。
我现在正在使用的功能如下:
def valid_num():
number = ''
valid = True
while valid:
try:
number = float(input('───→ '))
break
except ValueError:
print('')
print('Invalid input (numbers and decimal points only).')
return number
为了能够区分整数和浮点值,我查找了一些方法并找到了 isinstance() 函数,我可能没有正确应用它...这是我正在尝试使用的函数:
def valid_num():
number = ''
valid = True
while valid:
number = input('───→ ')
check_int = isinstance(number, int)
if check_int:
number = int(number)
break
check_float = isinstance(number, float)
if check_float:
number = float(number)
break
if not check_int and not check_float:
print('Invalid input (numbers and decimal points only).')
return number
抱歉,如果我没有看到明显的错误,我才刚刚开始编码...在此先感谢您提供的任何帮助 =D
正如@tim-roberts 所指出的,isinstance(number, int)
检查 number
的类型,它是一个字符串。
要区分整数和浮点数,您有两种选择:
尝试转换为
int
,如果失败尝试转换为float
;这将使用一对try
/except
子句。将输入验证为文本,检查它是否符合您为计算器设置的规则,可能使用正则表达式;这会让你肯定地断言它符合你的期望,而不是
int
和float
函数接受的任何东西。您也可以在
float
(或Decimal
)中完成整个工作,然后在输出时将4.0
转换为4
;这意味着您还将获得“0.5 * 8”的“4”(这可能比获得“4.0”更好或更差;这取决于您的用户体验设计)。