Как поместить целые числа в конец списка, чтобы он не стал «ошибкой атрибута» в Python? - PullRequest
0 голосов
/ 16 апреля 2019

Я делаю средний калькулятор, который вычисляет среднее значение чисел, выбранных пользователем. Вот мой код:

p = 1

print("How many numbers would you like the calculate the average of?")
k = int(input())

NUMBERS = ("m")

for x in range(k):
    u = (x + 1)
     print("What is Number ",u,"?",sep="")
    num = int(input())
    NUMBERS.extend("",num,"")
print(NUMBERS(2))

Ожидаемый результат:

How many numbers would you like the calculate the average of?  
>>>2
What is Number 1?
>>>5
What is Number 2?
>>>8
2

Пока что я пытаюсь увидеть, помещен ли он в конец списка, но в итоге он выглядит как Attribute Error.

Фактический результат:

How many numbers would you like the calculate the average of?
>>>2
What is Number 1? 
>>>5

"Строка 12, в NUMBERS.extend (" ", num," ") AttributeError: Объект "str" ​​не имеет атрибута "extend".

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Если у вас есть подобные ошибки, убедитесь, что объект имеет правильный тип.Ошибка говорит, что это строка, а не список.Это важная информация.

In [132]: n = ("m")                                                             
In [133]: n                                                                     
Out[133]: 'm'

() просто группируйте вещи;сами по себе они не создают список (или кортеж)

In [134]: n = ("m",)                                                            
In [135]: n                                                                     
Out[135]: ('m',)

Включение , создает кортеж.Но у кортежа также нет метода extend.

Вам нужен список:

In [136]: n = ["m"]                                                             
In [137]: n                                                                     
Out[137]: ['m']
In [138]: n.extend(1,2,3)                                                       
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-138-7b03428a3fa3> in <module>
----> 1 n.extend(1,2,3)

TypeError: extend() takes exactly one argument (3 given)

, и вы хотите дать extend список, а не несколько аргументов:

In [139]: n.extend(["one","two","three"])                                       
In [140]: n                                                                     
Out[140]: ['m', 'one', 'two', 'three']
0 голосов
/ 16 апреля 2019

Сначала вы должны определить свой список с помощью [] вместо () -> NUMBERS = ["m"]

Затем функция append() добавляет элемент в конец списка.

Итак, вот ваш код с этими двумя модификациями:

p = 1

print("How many numbers would you like the calculate the average of?")
k = int(input())

NUMBERS = ["m"]

for x in range(k):
    u = (x + 1)
     print("What is Number ",u,"?",sep="")
    num = int(input())
    NUMBERS.append(num)
print(NUMBERS(2))

Примечание: Я не уверен, что понимаю, почему вы инициализируете свой список с "m" ни почему вы не добавляете пустые строки "", но это ответит на ваш вопрос.Если вы дадите более подробную информацию об остальной части сценария, я был бы рад помочь.

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