Изменение типа из класса "список" на целое число - PullRequest
0 голосов
/ 10 октября 2018

Я получаю сообщение об ошибке при изменении типа из класса 'list' на целое число.Я получаю сообщение об ошибке:

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 голосов
/ 10 октября 2018

Проблема в том, что вы пытаетесь привести контейнер объектов (здесь: список) к типу для чисел (здесь: целое число).Но теперь, независимо от того, как долго и как часто вы пытаетесь сделать эту физическую кофейную чашку похожей на американо внутри, это не настоящая вещь, и вы действительно хотите, чтобы в этой чашке было что-то хорошее.

Чтобы получить его, вам нужно получить доступ к первому элементу списка, как я указал в моих комментариях.Например,

a = [42.42]

- это список, содержащий число 42,42.Этот список походит на чашку кофе, содержащую восхитительный кофе эспрессо (примечание: восхитительная жидкость в не очень вкусной бумажке).Если вы хотите получить тот номер, за которым вы хотите (содержимое контейнера), вам нужно сделать

a[0]
> 42.42

Теперь, когда у вас есть номер, вы можете получить целую часть:

int(a[0])
> 42

и вычтите это снова:

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

По крайней мере, я предполагаю, что это то, что вы пытаетесь сделать.Я могу ошибаться

0 голосов
/ 10 октября 2018

Список 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

Я не совсем уверен, что ваш код должен делать tbh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...