Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python выдаёт ошибку: ValueError: not enough values to unpack (expected 4, got 1)

женя плотников Профи (503), на голосовании 4 года назад
From sys import argv

script, first, second, third = argv
print("Этот сценарий называется:", script)
print("Моя первая переменная называется:", first)
print("Моя вторая переменная называется:", second)
print("Моя третья переменная называется:", third)

Когда набрал данный код в Visual Studio Code. В окне Терминала выдаёт ошибку: ValueError: not enough values to unpack (expected 4, got 1)
Помогите решить проблему, пожалуйста
Голосование за лучший ответ
Дед Мазай Гений (58133) 4 года назад
Чего ты ожидал от этой строки?
script, first, second, third = argv

В программе нет ошибок. Но она требует аргументов командной строки (3 шт). Поскольку их нет, то получается ошибка.
женя плотниковПрофи (503) 4 года назад
Не знаю) В книге был написан такой код, сказали переписать. Потом были строки расписаны.
Дед Мазай Гений (58133) женя плотников, это печально. Выброси такую книгу. В нормальной книге должно быть сначала объяснение, потом пример.
Игорь Козленко Мыслитель (9115) 4 года назад
script, first, second, third = argv - что это такое вообще?

From sys import argv - и что вообще за argv? Я читал в документации, но это навскидку какая-то малонужная хреновина

UPD. Разгадка из книги
женя плотниковПрофи (503) 4 года назад
Не знаю) В книге был написан такой код, сказали переписать. Потом были строки расписаны.
Игорь Козленко Мыслитель (9115) А что за книга? Можно принтскрин оттуда или хотя бы автор и номер страницы
Дед МазайГений (58133) 4 года назад
"Хреновина" самая обычная, стандартная. Иногда она необходима.
Игорь Козленко Мыслитель (9115) Дед Мазай, да, прочитал уже про нее, просто лично мне она не нужна была, вот и не сталиквался
Тимур ЛифарУченик (125) 2 года назад
ААХАХАХАХХ! Ребят, argv это аргументы. Например в CMD набираешь "file.py 1 2 3 4", будет 4 аргумента, первый "1", второй "2" и так далее. Аргументы всегда типа string.
port port Искусственный Интеллект (181594) 4 года назад
Уж сколько раз твердили миру: "Не покупайте книг по программированию!"

1. В них полным-полно "очепяток", так как напечатанный код никто толком не проверяет.
2. Задолбаешься перепечатывать эти тексты, к тому же, допуская собственные "очепятки"...

По идее, эта "мега-программа" должна была бы выглядеть как-то так:

script, first, second, third = 'argv','first', '2nd', '3rd'
print("Этот сценарий называется:", script)
print("Моя первая переменная называется:", first)
print("Моя вторая переменная называется:", second)
print("Моя третья переменная называется:", third)

Но называть переменные 2nd или 3nd - НЕЛЬЗЯ! Имя переменной не должно начинаться с цифры!

Вывод - книга очередная полная туфта, которая ничему хорошему не научит...
Leon ЛеонтьевУченик (131) 4 года назад
Ваш вывод по поводу книги - ошибочный! Автор специально совершал ошибки дабы развить внимательность у читателей (об этом говорится в самом начале!) Данную программу необходимо запускать через командную строку не забыв перечислить аргументы.
Leon Леонтьев, Вы не правы, автор прямым текстом написал, что нужно сделать и читатель который задал этот вопрос, как и я, не понял смысла слов и так же на автомате запустил программу строкой python "ex13,py", а нужно было "python ex13,py first 2nd 3rs". Но сейчас я понял в чем была проблема - невнимательность. P.S. Игорь Козленко, спасибо за помощь, открыл глаза)))
Тимур Лифар Ученик (125) 2 года назад
argv это аргументы. Например в CMD набираешь "file.py 1 2 3 4", будет 4 аргумента, первый "1", второй "2" и так далее. Аргументы всегда типа string.
Похожие вопросы