繁体   English   中英

在忽略浮点数和字符串的情况下如何返回整数(如果有整数)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM