我最近参加了在线编程竞赛,并提出了上述问题。
我的代码:
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。
出了什么问题,怎么做得好?
答案 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
我认为此在线提交将使用自动检查,并可能会查找正在使用的此功能。