2014-12-01 5 views
0

내 파이썬 스크립트 "동안"

app = "google facebook yahoo" 
prec = 0 
test = 0 
while test < 4 : 
    print "The test is test%d" % (test) 
while prec < 4 : 
    prec = prec + 1 
for i in app.split(): 
    print "The word is " + (i) + " precedence %d" % (prec) 
지금

실제 출력 :

그것의 연속 인쇄 다음중첩 루프

The test is test0 
The test is test0 
The test is test0 
The test is test0 
The test is test0 
The test is test0 

예상 출력 :

The test1 is 
The word is google precedence 1  
The word is facebook precedence 2 
The word is yahoo precedence 3 

The test2 is 
The word is google precedence 1  
The word is facebook precedence 2 
The word is yahoo precedence 3 

The test3 is 
The word is google precedence 1  
The word is facebook precedence 2 
The word is yahoo precedence 3 

The test4 is 
The word is google precedence 1  
The word is facebook precedence 2 
The word is yahoo precedence 3 

g 이 결과물을 얻는 방법에 관해 나에게 도움이된다. 미리 감사드립니다.

답변

2

하나에 문제가 루프 를 중첩되지 않은 것입니다. 다음 것은 당신의 변수 "테스트"를 0으로 설정하고이 결코 루프에서 변경되지 않기 때문에 첫 번째 루프

while test < 4 : 
    print "The test is test%d" % (test) 

이 무한 루프 것입니다. 따라서 시험 < 4가 항상 참입니다.

이렇게 할 수 있습니다.

apps = "google facebook yahoo" 
for i in range (1,4): 
    print 'test' + str(i) + 'is...' 
    precedence = 1 
    for app in apps.split(): 
     print "The word is " + app + " precedence " + str(precedence) 
     precedence += 1 
+0

또한 내부 루프에서'enumerate '를 사용하는 방법을 보여 줄 수 있습니다. – georg

2

while 루프 내에서 이러한 변수가 변경되지 않으므로 값이 변경되지 않고 루프가 종료되지 않습니다.

이 작동합니다 :

apps = ['google', 'facebook', 'yahoo'] 

for i in xrange(4): 
    print 'test' + str(i) + 'is...' 
    for app in apps: 
     print "The word is " + app + " precedence %d" % i 
+0

쿠마 (Kumar) 첫 번째 while 루프에서 테스트 변수를 증가시켜야합니다. –

+1

사실, 이것은 작동하지 않습니다. 파이썬에서 문자열과 정수를 연결할 수 없습니다. 'print "test", test, "is ..."는 작동합니다. 'print "테스트는 {...}입니다."format (test)'이 더 좋을 것입니다. –

+0

죄송합니다. – 101

1

좋아요. 가능한 한 원본 코드를 수정하여 수정하려고했습니다.

먼저 while 회 돌이를 사용할 때마다 분리 할 수 ​​있어야합니다. While 루프는 기본적으로 "특정 조건에 도달 할 때까지이 작업 실행"을 의미합니다. 귀하의 경우에 while 루프는 test가 4보다 크거나 같아 질 때까지 실행될 것입니다. 따라서 break하기 위해 루프의 시작 부분에 다음 코드를 추가했습니다.

test += 1 

의 + = 시험 단지 속기 = 시험이다 + 1

시험 4에 도달하면, 프로그램은 while 루프를 종료한다.

문자열에 대해 반복되는 for 루프가 이미 있으므로 두 번째 while 루프는 코드에서 필요하지 않습니다. 이 경우 두 번째 while을 제거하고 for 루프의 prec 카운터를 배치하는 것이 훨씬 더 간단합니다. 각 루프에 대해 카운터가 재설정되었는지 확인하려면 while 루프 내부에서 prec = 0을 이동했지만 for 루프 외부에서는 제거했습니다. 이것은 for 루프가 실행될 때마다 prec가 0에서 시작하여 1,2,3으로 증가하고 다시 0으로 증가합니다.

희망이 있습니다!

#!/usr/bin/python 
app = "google facebook yahoo" 
test = 0 
while test < 4 : 
    test += 1 
    print "The test is test%d" % (test) 
    prec = 0 
    for i in app.split(): 
     prec = prec + 1 
     print "The word is " + (i) + " precedence %d" % (prec)