2016-04-23 2 views
0

Я занимаюсь списком, но у меня есть некоторая ошибка.Как использовать float в разрезе списка при использовании round()

li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11] 
print li[:int(len(li)*0.3)] 
print li[int(len(li)*0.3):] 

Это будет печатать [1, 2, 3] [4, 5, 6, 7, 8, 9, 10, 11]

но когда я использую round(), он идет неправильно. Как это решить?

li[:(round(li)*0.3)] 

----> 1 li[:(round(li)*0.3)]

TypeError: a float is required

Во-первых, я пытаюсь добавить float

float (li[:(round(li)*0.3)]) 

но есть еще ошибка

+0

Вы имели в виду 'li [: round (len (li) * 0.3)]'? Вы в настоящее время пытаетесь округлить * сам список * ... – jonrsharpe

ответ

1

Вы забыли для выполнения функции len() ca ЛЛ:

li[:round(len(li)*0.3)] 

Но, это приведет к ошибке slice indices must be integers or None or have an __index__ method. Вы должны преобразовать округленное граничное значение в целое число:

li[:int(round(len(li)*0.3))] 
+0

Я предполагаю, что они хотят, чтобы продукт * внутри * округлял, как написано, это 'TypeError'. – jonrsharpe

+0

@jonrsharpe ах, конечно. Хорошая точка зрения. – alecxe

+0

Да, когда я использую код, он все равно скажет мне TypeError – busystudent

Смежные вопросы