2015-03-01 3 views
0

В разделе «Изучать Python» Трудный путь (упражнение 13) 3-й учебный дрель говорит «Объединить raw_input с argv, чтобы сделать скрипт, который получает больше информации от пользователя».Учиться Python Трудный путь - Упражнение 13 Исследование упражнений

Я написал этот сценарий ниже, намереваясь иметь терминал, предлагающий пользователю ответы на три вопроса, затем он будет печатать назад фразы с ответами, встроенными в них. Тем не менее, я получаю ошибку о не имея достаточно значений для распаковки, когда я пытаюсь запустить его с помощью следующей команды:

python ex13.py 

Я понимаю, что мне нужно больше переменных для распаковки для того, чтобы скрипт работал, так что, когда Я печатаю это то скрипт работает, но никогда не выводит переменные «первой», «второй» или «третьей» (который я не хочу, чтобы это так или иначе):

python ex13.py first second third 

Я знаю, как написать сценарий без импортируя аргументы аргументов, но как еще я могу интерпретировать учебное упражнение? Я знаю, что я не понимаю подсказки исследования, но я не уверен, как писать сценарий по-другому или даже если я пойду в правильном направлении.

Может кто-нибудь предложить несколько советов или советов? Вам не нужно давать мне ответ прямо (мне нравится разобраться), но сейчас я нахожусь в недоумении.

МОЙ СЦЕНАРИЙ:

from sys import argv 

script, color, number, shape = argv 

color = raw_input("What is your favorite color? ") 
number = raw_input("What is your favorite number? ") 
shape = raw_input("What is your favorite shape? ") 

print """ 
This program is called %r and it will determine your 
favorite color, number and shape. 
""" % script 

print "Based on your answers, your favorite color is:", color 
print "Your favorite number is:", number 
print "And your favorite shape is a:", shape 
+0

Я понял, как заставить скрипт работать, удаляя «, цвет, число, форма» befor eth «=». Но я все еще получаю скобки вокруг имени моего скрипта сейчас: $ python ex13.py Ваш любимый цвет: purple Ваш любимый музыкальный номер: 17 Ваша любимая музыка: triangle Эта программа называется ['ex13.py'], и она определит ваш любимый цвет, количество и форму вашего . на основе ваших ответов, ваш любимый цвет: фиолетовый Ваше любимое число: 17 И ваша любимая форма является: треугольник $ – StegosaurusRex

ответ

0

Что именно вы хотите, чтобы ваш код делать? Если вы хотите иметь

$ python ex13.py 
    $ What is your favorite color? <yourColor> 
     .......... 
    $ Your favorite color is <yourColor> 

Тогда вам нужно избавиться от той части, где вы задали все эти значения из argv. argv - это список аргументов, переданных python при вызове в командной строке. Исправление, которое у вас есть в ваших комментариях, устанавливает сценарий = ['ex13.py'] вместо «ex13.py» именно по этой причине, вы устанавливаете скрипт как список, а не строку.

Если вы хотите, чтобы ваш код запускался так, чтобы вы передавали аргументы сценария при его запуске, вы могли бы избавиться от своих разделов, требующих raw_input (или вы могли бы оставить их, но это переписало бы их значения из того, что вы переданный в командной строке). Попробуйте выполнить код, который вы опубликовали, с

$ python ex13.py <yourColor> <yourNumber> <yourShape> 

Он должен работать намного ближе к тому, что вы хотите.

+0

Спасибо Галена. Я думаю, что я пытался сделать одно, но моя проблема заключалась в том, что я делал это двумя разными способами. Любая часть кода (верхняя или нижняя) была написана для того, чтобы сделать то же самое, и мне пришлось удалить тот или другой, чтобы заставить его работать. Я просто искал способ написать простую программу, используя как raw_input, так и argv. Я до сих пор не знаю, что я делаю, поэтому я просто играл с учебными упражнениями, надеясь найти какое-то направление. – StegosaurusRex

0

Как вы уже решили одну проблему, удалив переменные до =, теперь единственная проблема заключается в том, что вы получаете квадратные скобки вокруг ex13.py.

Вы видите, что после скрипта перед добавлением = вы должны добавить другую переменную, которая не содержит input(), и проблема решена.