【发布时间】:2022-01-29 14:59:29
【问题描述】:
如何在 python 上编写一个函数,在输入中接受两个对象并在输出时给出两个对象都可以呈现的最小类型?
示例:我们有两个对象:1 和 5.25。我们无法将它们都转换为 int,因为这样我们将丢失有关 5.25 的信息,这些信息将被转换为 5。我们可以将它们都转换为float:1.0 和5.25,这是正确的答案。当然我们可以说我们可以将它们都转换为str:"1","5.25",但在我们的解释中,我们假设int < float < tuple < list < str(当然我们不能比较对象的类型,但我们假设得到答案)然后float 是两个对象都可以转换为的最小可用类型。
我尝试了类似的方法:
def type_convertion(first, second):
data_types = [int, float, tuple, list, str]
times = {}
for _type in data_types:
times[_type] = 0
try:
if isinstance(_type(first), _type):
times[_type] += 1
except TypeError:
del times[_type]
continue
try:
if isinstance(_type(second), _type):
times[_type] += 1
except TypeError:
del times[_type]
continue
return times.keys()
但是当我比较int 和float 时,答案是int 但应该是float,我不知道如何解决。
【问题讨论】:
-
isinstance(_type(x), _type)毫无意义,要么引发异常,要么是True。 -
@mkrieger1 但那我该如何解决呢?
-
如果你想测试
x是否已经属于给定类型,我认为你应该改用isinstance(x, _type),而不是它是否可以转换为那个类型. -
@mkrieger1 它不起作用。我试过了
-
那你还有一个问题。
标签: python python-3.x function types type-conversion