Я пишу программу 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(). Теперь вы не можете использовать встроенную функцию input() без дополнительной работы. Проще просто переименовать свою функцию.
ой ! спасибо, не заметил.
подождите, как вы используете встроенную функцию после ее затенения? @MartijnPieters я... ммм... ищу друга.
да теперь работает спасибо
@ParitoshSingh: 3 варианта: создать псевдоним заранее (builtin_input = input перед привязкой к input), с помощью импорт модуля builtins (import builtins, ..., builtins.input()) или путем удаления глобального, затеняющего встроенный (del input, здесь не вариант) .
Очень признателен






Обратите внимание на эти 2 строки вашего кода:
def input():
и
n=int(input('enter the number of trials'))
В первом из них вы переопределить встроенную функцию input() (которая принимает параметр 0 или 1) со своей собственной функцией то же имя (которая принимает только параметры 0, т.е. е. никто).
Так вот во втором из них вы вызвали НЕТ встроенную функцию input() - как вы хотели - но твой собственный, и так как вы вызвали ее с параметром 1 ('enter the number of trials'), вы получили соответствующую ошибку.
Выберите другое имя для определения функции вашinput(), а затем также используйте это имя для ее вызова.
input— это встроенная функция. Очень плохая идея использовать это как имя для вашей собственной функции. Что будет решатьn=int(input('enter the number of trials')), когда вы вызовете свою собственную функциюinput? Переименуйте свою функцию, и она решит эту проблему.