#python #python-3.x
#python #python-3.x
Вопрос:
Я не знаю, почему int(input())
выдает ошибку
просто я нажимаю кнопку execute, но она показывает мне ошибку
Я не могу ввести какую-либо строку или int
мой код:
import sys
input = sys.stdin.readline
def process_queue(queue_list, f_idx, r_idx, command):
cmd = command[0]
if cmd == "push":
queue_list[r_idx] = command[1]
r_idx = 1
elif cmd == "pop":
if f_idx == r_idx:
print(-1)
else:
print(queue_list[f_idx])
f_idx = 1
elif cmd == "size":
print(r_idx-f_idx)
elif cmd == "empty":
print(int(r_idx == f_idx))
elif cmd == "front":
if f_idx == r_idx:
print(-1)
else:
print(queue_list[f_idx])
elif cmd == "back":
if f_idx == r_idx:
print(-1)
else:
print(queue_list[r_idx-1])
return [f_idx, r_idx]
n = int(input())
queue_list = [0 for _ in range(n)]
f_idx = 0
r_idx = 0
for _ in range(n):
command = input().split()
f_idx, r_idx = process_queue(queue_list, f_idx, r_idx, command)
Комментарии:
1. Во второй строке вы устанавливаете входные данные в переменную. Таким образом, вы перезаписываете функцию ‘input’. Это означает, что он не существует, когда вы вызываете его с помощью input ()
2. @Rashid’Lee’Ibrahim хотя и не ясно, почему это используется, но
readline
должно работать практически так же… OP говорит, что он даже не может ввести входные данные. Было бы полезно увидеть полную ошибку…3. Когда я скопировал и запустил ваш код, я получил
IndentationError
в строкеreturn [f_idx, r_idx]
. Я думаю, что эта ошибка довольно понятна, и это помогло бы, если бы вы действительно опубликовали ее…4. @Tomerikoo Я не знаю, является ли это ошибкой копирования-вставки с его стороны, но возвращаемое значение на один пробел больше, чем должно быть.
5. @Tomerikoo также, после исправления этого одного пробела. Если вы закомментируете
input=sys.stdin.readline
, скрипт сработает. Но если вы оставите это там, он не примет входные данные.
Ответ №1:
Ввод ()
Ввод принимает ввод от пользователя, но не считывает escape-символ.
У него есть подсказка, которая представляет значение по умолчанию перед пользовательским вводом.
sys.stdin.readline()
Readline () также принимает входные данные от пользователя, но также считывает escape-символ.
По сути, вы пытаетесь использовать input (), но вы назвали input = sys.stdin.readline (), так что это то, что вызывает у вас проблему.
Комментарии:
1. Нет, это не так … как сказал OP, ошибка возникает еще до того, как будет запрошен ввод… Похоже на ошибку отступа (при условии, что код был скопирован правильно и не является опечаткой)
2. Большое вам спасибо. Я думаю, что ваш комментарий похож на комментарий выше, верно?
3. Хорошего дня
4. Для Tomerikoo я дополняю этот код некоторым ответом. Когда я пишу этот вопрос, я ошибочно переношу свой код. также спасибо и вам!
5. кстати, мой английский на очень низком уровне …. если вы не понимаете, о чем я говорю, прокомментируйте еще раз, пожалуйста
Ответ №2:
Это то, что вызывает проблему:
import sys
input = sys.stdin.readline
Вы в основном меняете ввод метки так, чтобы она ссылалась на sys.stdin.readline. Читать это.
Однако было бы полезно просмотреть сообщение об ошибке.
Комментарии:
1. Вы в основном меняете ввод метки так, чтобы она ссылалась на sys.stdin.readline — почему это должно быть проблемой?
2. о, спасибо! Я знаю, в чем проблема. Хорошего дня!