检查输入是整数浮点数还是字符串或其他?

时间:2017-04-29 09:56:39

标签: python-3.x

我最近参加了在线编程竞赛,并提出了上述问题。

我的代码:

abc=input()
if (abc.isnumeric()):
    print("This input is of type Integer")  
elif (abc.replace('.','').isdigit()):
    print("This input is of type Float")
elif (abc.replace('-','').isdigit()):
    print("This input is of type Integer")
elif (((abc.replace('-','')).replace('.','')).isdigit()):
    print("This input is of type Float")
elif (abc.isalnum):
    print("This input is of type string")
else:
    print("This is something else.")

在Python中,它适用于不同的测试用例,但是在线提交说错了,我得到了0/100。

出了什么问题,怎么做得好?

2 个答案:

答案 0 :(得分:0)

看起来你通过字符串操作不必要地复杂化了。您可以使用嵌套的try-catch语句实现相同的功能。这段代码应该很简单:

abc = input()
try:
    test = int(abc)
    print("This input is of type Integer")
except:
    try:
        test = float(abc)
        print("This input is of type Float")
    except:
        print("This input is of type String")

如上所述。代码的得分在很大程度上取决于测试代码的编码方式。也就是说,处理多个测试用例以及它希望如何为每个测试用例格式化输出,等等。

修改

从评论中的讨论看来,您似乎错过了每个句子末尾的句号(句号)以及' String'应该是小写的。我怀疑最后一种情况("这是别的东西。")会发生。此外,如果需要进一步减少代码大小,则以下代码应该可以正常工作。

abc = input();
if len(abc) == 0: print("This is something else.")
else:
    print("This input is of type", end=" ")
    try: int(abc); print("Integer.")
    except:
        try: float(abc); print("Float.")
        except: print("string.")

这假设没有输入意味着其他东西。"就个人而言,我并不认可这个级别的紧凑性。

答案 1 :(得分:0)

我希望检查参数是什么的方法是使用python中内置的type()函数。

例如

abc = "a string"

表达式

print (type(abc))

将返回

<type 'str'>

这也可以通过以下方式完成:

type(abc) is str

返回

True

type(abc) is list

返回

False

我认为此在线提交将使用自动检查,并可能会查找正在使用的此功能。