[英]How to return int if whole number, while ignoring floats and strings
我想输入一个可以是浮点数或字符串的输入,如果它是一个整数,则返回int(input),否则就返回输入。
到目前为止,我尝试使用excep ValueError,但这没能正常工作。
def whole_number(num): #takes float or str
try:
x = num%1
if x == 0:
return int(num)
else:
return num
except ValueError:
return num
print(whole_number(1.1)) #should return 1.1
print(whole_number(9.0)) #should return 9
print(whole_number("word")) #should return "word"
但不断收到错误“ TypeError:不是在格式化字符串时转换了所有参数”
有什么建议么? 谢谢
您可以使用float.is_integer()
检查整数:
def whole_number(num): # takes float or str
return int(num) if isinstance(num, float) and num.is_integer() else num
样品用法 :
>>> whole_number(1.1)
1.1
>>> whole_number(9.0)
9
>>> whole_number("word")
word
怎么了?
num = 'word'
print(num%1)
..是您的代码失败的部分。 在字符串上使用mod操作,Python认为这是尝试使用'%'
抛出“ TypeError:不是在格式化字符串期间转换的所有参数”来格式化字符串 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.