将类型从“列表”类更改为整数

时间:2018-10-09 21:56:11

标签: python type-conversion

将类型从“列表”类更改为整数时出现错误。我遇到的错误是这样

des = int(ces)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'.

代码:

print('Please enter a latitude or longitude value in DMS or DD format.')
a = [int(x) for x in input("Please enter DMS or DD in integer format: ").split(',')]

if len(a) == 3:
   d,b,c = a
   dd = float(d) + float(b)/60 + float(c)/(60*60);
   print("The input value is in DMS form and the DD is", dd)

elif len(a) == 1:
   ces = str(a)
   des = int(ces)
   md = abs(ces - des) * 60
   m = int(md)
   sd = (md - m) * 60
   print[des, m, sd]
else: print("Incorrect input format")

2 个答案:

答案 0 :(得分:0)

列表a是整数列表。我不知道为什么要把它变成一个字符串然后再变成一个整数,但是:

>>>> str([0]) 
'[0]'

然后,尝试再次将其转换为整数失败:

>>>> int('[0]')
ValueError: invalid literal for int() with base 10: '[0]'

即使可行,下一步也将毫无意义,因为它始终为0:

ces = str(a[0])
des = int(ces)
md = abs(a[0] - a[0]) * 60 # This is always 0

我不确定您的代码应该做什么。

答案 1 :(得分:0)

问题是您尝试将一个对象容器(在此为列表)强制转换为数字类型(在此为整数)。但是,现在不管您要尝试多长时间和多长时间使这种物理咖啡杯尝起来像Americano一样,它都不是真正的东西,您真的想要在杯子中放入好东西。

要获取它,您需要访问第一个列表元素,正如我在评论中指出的那样。例如,

a = [42.42]

是包含数字42.42的列表。这个清单就像一杯咖啡,里面含有美味的意式浓缩咖啡(注意:不太好的纸质里面的美味液体)。如果您想获取该号码(容器中的内容),则需要

a[0]
> 42.42

现在有了数字,您可以得到整数部分:

int(a[0])
> 42

并再次减去:

a[0] - int(a[0])
> 0.42

至少我认为这是您要尝试做的。我可能是错的。