2013-02-16 2 views
0

나는 영화를 요구하는 작은 앱을 가지고있다. 등급이 50 점 이상일 때 돌아가서 시청하십시오. 그렇지 않으면 다른 영화를 선택하십시오. 비록 내가 movieDec에서 조건을 얻었을 때, 그것은 영화의 점수를 계산하는 함수의 맨 위로 돌아 가지 않을 것입니다. 이걸 알아낼 수 없어요. 루프에서파이썬 함수 while 루프에 문제가있다.

def getScore(): 
    choose = raw_input("pick a movie ") 
    rt = RT() 
    info = rt.search(choose) 
    rating1 = info[0].get('ratings').get('critics_score') 
    rating2 = info[0].get('ratings').get('audience_score') 
    stars = (rating1 + rating2)/2 
    return rating1, rating2, stars 


def movieDec(): 
    critic, aud, stars = getScore() 
    print 'Critics gave it a %s' %critic 
    print 'Audiences gave it a %s' %aud 
    print 'The average rating is %s' %stars 
    while stars < 50: 
     print "That's no good, pick again" 
     getScore() 
    print 'Good choice.' 

답변

2

당신은 루프에서 stars 변수를 업데이트되지 않습니다 것을

getScore() 

변경. 시도 :

while stars < 50: 
    print "That's no good, pick again" 
    critic, aud, stars = getScore() 
0

, 당신은 getScore()의 반환 값을 무시하고 있습니다 :

critic, aud, stars = getScore() 
0

이 수정 코드 above getScore() 함수 2 시간을 부를 것이다 (만약 별 < 50)하지만 루프처럼 보이는 때까지이 점수가 표시되지 않습니다 : 대신

while stars < 50: 
    print "That's no good, pick again" 
    critic, aud, stars = getScore() 
    print 'Critics gave it a %s' %critic 
    print 'Audiences gave it a %s' %aud 
    print 'The average rating is %s' %stars 
+0

모든 것을 다시 인쇄하면'movieDec()'를 다시 호출 할 수 있습니다. –

+0

@ F3AR3DLEGEND 예. 내 잘못이야! – arcolife