TypeError: input () принимает 0 позиционных аргументов, но 1 был задан - PullRequest
0 голосов
/ 02 февраля 2019

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

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()

1 Ответ

0 голосов
/ 02 февраля 2019

Обратите внимание на следующие 2 строки вашего кода:

def input():

и

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

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

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

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

...