Я не знаю, почему var = int (input ()) является ошибкой

#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. о, спасибо! Я знаю, в чем проблема. Хорошего дня!