2014-01-10 2 views
1

Я просмотрел вопросы, на которые уже был дан ответ, но я все еще смущен. Я запустил код 100 раз, и я продолжаю получать одно и то же значение «ValueError: требуется больше, чем 1 значение для распаковки», поэтому очевидно, что что-то не вычисляет (см., Что я там сделал?) Для меня. Может ли кто-нибудь взглянуть на мой код и объяснить мне, как вы, ребенок, что я испортил?ValueError: требуется больше, чем 1 значение для распаковки - Изучите Python Hard Way Ex: 13

Очевидно, я уже отклонился от условий на уроке из явного разочарования

Что я написал:

from sys import argv 

script, called, coding, confusing = argv 

print "The script is called:", script 
print "Your first variable is:", called 
print "Your second variable is:", coding 
print "Your third variable is:", confusing 

Есть ли специальное то, что я должен ввести в терминале или я просто отсутствующие биты кода?

ответ

4

argv - это кортеж, содержащий аргумент, с которым был вызван сценарий. Вам необходимо пройти сценарий необходимое количество аргументов при вызове его:

python myscript.py param_called param_coding param_confusing 

Чтобы идти дальше:

Вы используете синтаксис называется распаковке. Это означает, что левая сторона не является одной переменной, а скорее «последовательностью» (кортежем) переменных. С левой стороны вам нужна последовательность, которая имеет такое же количество элементов, как список или кортеж. Каждой переменной с левой стороны присваивается соответствующее значение с правой стороны. См. the tutorial about tuples and sequences (последний абзац).

О вашей левой стороне, argv или выше sys.argv, это кортеж, который содержит имя сценария как первый элемент и параметры командной строки. См. argv.

Все вместе взятые: вы хотите распаковать sys.argv, который в приведенном выше примере ("script.py", "param_called", "param_coding", "param_confusing") в script,called,coding,confusing, так что переменная script будет зависеть строку "script.py", called строку "param_called" и т.д.

Недостатком этого метода заключается в том, что если в командной строке слишком мало или слишком много аргументов, распаковка не выполняется.

+0

Ok, на рискуя очень и очень немой вы можете объяснять что еще немного? –

+0

Да, я собираю ссылки :) – Cilyan

+0

Я обновил ответ, надеюсь, что это поможет. – Cilyan

1

Ваш код правильный, но, как указано в инструкции, то вы должны положить 3 «аргументы» в командной строке команду

например: $ питон ex13.py называется кодированием запутанные
вышеуказанные выводит его к команде подскажите:

сценарий называется: ex13.py Ваш первый переменная: называется Ваша вторая переменная: кодирование Ваша третья переменная является: запутался

Смежные вопросы