TypeError: input() принимает 0 позиционных аргументов, но был задан 1

Я пишу программу Python для измерения временной сложности сортировки вставками. Однако я получил вышеупомянутую ошибку в строке номер 6. Эта ошибка также возникает во время other{ int(inputs) }. Любая помощь будет здорово, спасибо. Мой код:

import random, matplotlib.pyplot as plt

def input():
    arr=[]
    ret_size=[]
    ret_count=[]
    n=int(input('enter the number of trials'))
    for i in range(n):
        x=int(input('size of array:'))
        for z in range(x):
            r=random.randint(1,2000)
            arr.append(r)
        count=0
        for ind in range(1,len(arr)):
            count+=1
            cur=arr[ind]
            count+=1
            pos=ind
            while pos>0 and arr[pos-1]>cur:
                count+=1
                pos=pos-1
                count+=1
            arr[pos]=cur
        count+=1
        print('sorted listL')
        print(arr)
        print('number of hops:')
        print(count)
        ret_size.append(x)
        ret_count.append(count)
    plt.plot(ret_size,ret_count)
    plt.xlabel('size of input')
    plt.ylabel('number of hops')
    plt.title('insertion sort')
    plt.show()

input()

input — это встроенная функция. Очень плохая идея использовать это как имя для вашей собственной функции. Что будет решать n=int(input('enter the number of trials')), когда вы вызовете свою собственную функцию input? Переименуйте свою функцию, и она решит эту проблему.
roganjosh 02.02.2019 18:53

Вы определили свою собственную функцию input(). Теперь вы не можете использовать встроенную функцию input() без дополнительной работы. Проще просто переименовать свою функцию.

Martijn Pieters 02.02.2019 18:56

ой ! спасибо, не заметил.

ABHISHEK PARMAR 02.02.2019 18:57

подождите, как вы используете встроенную функцию после ее затенения? @MartijnPieters я... ммм... ищу друга.

Paritosh Singh 02.02.2019 18:57

да теперь работает спасибо

ABHISHEK PARMAR 02.02.2019 18:59

@ParitoshSingh: 3 варианта: создать псевдоним заранее (builtin_input = input перед привязкой к input), с помощью импорт модуля builtins (import builtins, ..., builtins.input()) или путем удаления глобального, затеняющего встроенный (del input, здесь не вариант) .

Martijn Pieters 02.02.2019 19:07

Очень признателен

Paritosh Singh 02.02.2019 19:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
5 712
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание на эти 2 строки вашего кода:

def input():

и

    n=int(input('enter the number of trials'))

В первом из них вы переопределить встроенную функцию input() (которая принимает параметр 0 или 1) со своей собственной функцией то же имя (которая принимает только параметры 0, т.е. е. никто).

Так вот во втором из них вы вызвали НЕТ встроенную функцию input() - как вы хотели - но твой собственный, и так как вы вызвали ее с параметром 1 ('enter the number of trials'), вы получили соответствующую ошибку.

Выберите другое имя для определения функции вашinput(), а затем также используйте это имя для ее вызова.

Другие вопросы по теме

Похожие вопросы