2014-09-04 2 views
4

전에서 ex13을하고있어 알아 파이썬 어려운 방법argv에 raw_input을 사용하는 방법은 무엇입니까?

내가 통과하려고 해요 :

python ex13.py raw_input() raw_input() raw_input() 

내 코드는 다음과 같습니다 :

from sys import argv 

script, first, second, third = argv 

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

I가 점점 계속 오류 :

Traceback (most recent call last): 
File "ex13.py", line 5, in <module> 
    script, first, second, third = argv 
ValueError: too many values to unpack 

나는이 오류가 발생하는 이유를 알고 싶습니다. 어떻게 수정합니까? t

+0

당신은'raw_input을 통과 할 수는 argv와 raw_input을 (내 코드)입니다! 다음은 제게 잘 돌아갑니다 :'python test.py 1 2 3' – alfasin

+0

어떤 운영체제를 사용하고 있습니까? –

+0

'raw_input()'을 전달하면 실제 입력을 허용하지 않습니다. 커맨드 라인에서 그것은 arg1, arg2와 arg3을 argv에서 문자열'raw_input'을 전달할 것이고, arg0는 여전히 스크립트 이름으로 남을 것입니다. 그러나 argv가 값을 생성하기 때문에 오류가 발생해서는 안됩니다. – ZWiki

답변

6

raw_input()argv과 함께 사용할 수 없습니다. argv은 프로그램을 실행하기 전에 으로 지정한 데이터와 함께 제공됩니다. raw_input()파이썬 함수입니다. 즉 프로그램에서 수행 할 수있는 작업입니다. 명령 줄 - 프로그램을 실행하기 위해 python 명령을 입력하면 은 프로그램 자체에서 완전히 별개의 것입니다.

-1

너가 argv에서 4 개의 값을 풀려고하고 정확히 4 개의 요소가 없기 때문에 "너무 많은 값을 풀어 야합니다"라는 오류가 있습니다.

질문에서 이 무엇인지 알 수 없습니다 (괄호로 인해 python ex13.py raw_input() raw_input() raw_input()을 입력하면 문제가 발생 함). 그러나 인쇄하여 찾을 수 있습니다.

+0

이것은 실제로는 주석으로, 대답이 아닙니다. 문제를 더 디버깅하여 다른 사람이 대답을 쓸 수있는 방법을 알려줍니다. – abarnert

7

저는 현재 LPTHW를 직접보고 있는데이 운동을했습니다. 저자가 의미하는 바는 같은 스크립트에서 방금 argvraw_input()을 사용하기를 원한다는 것입니다. 그는 그 자체로, 같은 논증이나 선상에서 그 자체로 결합하는 것을 의미하지는 않습니다. 사실,이 문제 만 다루는 '공통 학생 질문'중 하나입니다. 그는 말합니다

지나치게 생각하지 마십시오. 이 스크립트의 끝에서 raw_input()을 사용하여 무언가를 얻은 다음 두 줄을 쳐서 인쇄하십시오. 그로부터 동일한 스크립트에서 둘 다 사용할 수있는 더 많은 방법으로 게임을 시작하십시오.

비록 2 개월 늦어도 도움이되기를 바랍니다.

이 나는 ​​문제의 '학습 훈련'완료하기 위해 스크립트를 수정 한 방법입니다

from sys import argv 

script, first, second, third = argv 
fourth = raw_input("What is your fourth variable? ") 

print "All together, your script is called %r, your first variable is %r, your second is %r, your third is %r, and your fourth is %r" % (script, first, second, third, fourth) 
0

을 나는 이것이 저자가 (이 int로 사용 ARGV &를 사용하여 입력을 가지고 무엇을 의미하는지 생각 raw_input을()) : -

from sys import argv 

script, first, second, third, take_input = argv 

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

raw_input(take_input + "? ") 
-1
당신이 ipython 노트북에있는 경우

auther의 생각이 같이해야

% run ex13.py 1st 2nd 3rd 

당신이

python ex13.py 1st 2nd 3rd 
0

저자가 연구 드릴 그의 명령에 분명하기 때문에 명령 행에있는 경우 : ". 는 사용자로부터 더 입력를 얻을 수있는 스크립트를 만들 argvraw_input 결합" 네 번째 입력을 요청하는 다른 행을 추가 할 수 있습니다.

fourth = raw_input("Enter the fourth value: ")  
print "Your fourth variable is: ", fourth  

또는 코드를보고, 내가이

from sys import argv 

script, first, second, third = argv, raw_input("Enter first value: "), raw_input("Enter second value: "), raw_input("Enter third value: ") 

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

이 방법으로 당신을 좋아한다, 그것은 "사용자로부터 입력을 취득하는 스크립트를 만들기 위해"좋아 지나치게 생각하면 그 수치 스크립트를 실행하기 위해 데이터로 python ex13.py을 제공 할 필요가 없습니다. 다시 말하지만, 그것은 당신의 연구 훈련이 당신이하기를 원하는 것이 아니지만 도움이되기를 바랍니다.

0

예, 할 수 있지만 약간 힘들며 작성자는 이전 연습에서 언급하지 않았습니다.

argv는 실제로 목록 [] (또는 데이터 배열)이므로 스크립트 내에서 개별 요소를 처리 할 수 ​​있습니다.

from sys import argv 
script, first, second, third = argv # one way to unpack the arguments 

script_new = argv[0] # another way 
first_new = argv[1] 
second_new = argv[2] 
third_new = argv[3] 

print "original unpacking: ", script, first, second, third 
print "argv[] unpacking: ",script_new, first_new, second_new, third_new 

argv[0] = raw_input("argument 0? ") 
argv[1] = raw_input("argument 1? ") 
argv[2] = raw_input("argument 2? ") 
argv[3] = raw_input("argument 3? ") 

print argv[0], argv[1], argv[2], argv[3] 
2

파이썬 하드 방법을 알아에서 운동 13 연구 드릴을 완료하려는 경우, 당신은()는 argv와 raw_input을 결합하려고 :

은 여기 내 예입니다. 저자는 raw_input()을 사용하여 사용자로부터 더 많은 입력을 얻을 것을 제안합니다.

from sys import argv 

ScriptName, first, second, third = argv 

print "What is your fourth variable?" 
fourth = raw_input() 
print "What is your fifth variable?" 
fifth = raw_input() 
print "What is your sixth variable?" 
sixth = raw_input() 

print "The script is called: ", ScriptName 
print "Your first variable is: ", first 
print "Your second variable is: ", second 
print "Your third variable is: ", third 
print "Your fourth variable is: ", fourth 
print "Your fifth variable is: ", fifth 
print "Your sixth variable is: ", sixth 

print "For your script %r, these are the variables: %r, %r, %r, %r, %r, 
    and %r." % (ScriptName, first, second, third, fourth, fifth, sixth) 

이 저자가 제안 무엇으로 보이는가

:이 스레드에서 도움으로

나는이 함께했다?

0

저는 이것을 지금 배우고 있습니다. 제 생각에 그는 당신이 생각하고 그것에 대해 더 많은 것을 시도하기를 바랍니다.

from sys import argv 

script, slave = argv 
print "Superme master, slave %s is waiting for your order." % slave 

slave_says = "Humble %s wants know your supreme name, master:\n" % slave 
name = raw_input(slave_says) 

want = raw_input("What do you want, my superme master?\n") 
if want == "Make you freedom.": 
    print "When you make me freedom. you are also make yourself freedom." 
else: 
    print "Yes, my superme master." 
0

enter image description here 나는 저자가 사용자로부터 더 많은 입력을 할 싶은 생각 : 다음은 내 코드입니다. 커맨드 라인을 통해 사용자로부터 입력을 받기 때문에 raw_input() 메소드를 추가해야합니다. 그러면 더 많은 입력을 받아서 사용자에게 출력 할 수 있습니다.

여기에`) (

enter image description here

관련 문제