2012-12-04 5 views
1

기본 파이썬을 배우려고하는데 while 루프를 사용하여 값을 반환 할 수없는 것처럼 보입니다. 내가 읽고있는 지침에서 구문을 복사하고 있지만 그것을 실행할 때 작동하지 않는 것 같습니다. 다른 버전이있을 수 있습니다. 확실하지 않습니다. 어떻게 파이썬에서 루프를 사용하여 값을 반환 할 수 있습니까?

가 어쨌든 난 그냥 내가 심지어이 올바르게 계승 계산하면, 난 상관 없어 모르는이 코드

def fact(x): 
count = 1 
sum = 0 
while count <= x: 
    sum = count * sum 
    count + 1 
else: 
    return sum 

을 장난 및했습니다, 난 그냥 값을 반환하려고 노력하고 있어요 . 뭐가 잘못 되었 니? 왜 내가 수익을 사용할 수없는거야? 나는 무엇이 잘못되었는지 잘 모르겠다. 반환 할 때

 display, 

여전히 작동하지 않는다.

+0

@keyser :'if','while','for','try'는 모두'else' 절이 있습니다. –

+0

@ Keyser : 정상적으로 구현하기 위해 일반적으로 6 라인을 필요로하는 코드 최적화를 넣을 수 있습니다. –

+0

@ IgnacioVazquez-Abrams 내가 잘 모르겠다. 나는 그것이 단지 여분의 코드 라인 인 것처럼 보인다는 것을 의미했다. 우리는 지금 주제에서 벗어날 것입니다 : p 명확히 해 주셔서 감사합니다. – keyser

답변

2
def fact(x): 
    count = 1 
    sumi = 1 
    while count <= x: 
     sumi = count * sumi 
     count = count + 1 

    return sumi 

일부 실수 :

  • 먹 = 0 시작이 잘못에서,이 함수는 항상 0
  • 이 카운트 + 1은 계수의 값을 변경하지 않습니다 반환 할 것입니다 만약 당신이 돈 무엇이든 할당하십시오.
  • 잠시 후 귀하의 return 문을 입력하십시오. 루프가 끝나면 sumi의 값을 반환합니다.
2

시도 :이 비록

def fact(x): 
    count = 1 
    sum = 1 
    while count <= x: 
     sum *= count 
     count += 1 
    return sum 

아마 좋네요 :

def fact(x): 
    prod = 1 
    for i in range(1, x+1): 
     prod *= i 
    return prod 

당신은 당신이 모든 n에 대한 0 * n == 0 때문에, 밖으로 0를 얻을 수 있습니다 0에서 계산 변수를 시작합니다.

else도 여기서는 전혀 쓸모가 없습니다. 당신의 while 루프에서

+1

[제외] (http://docs.python.org/2.7/reference/compound_stmts.html). 이 경우에는 필요하지 않지만 아무것도 영향을 미치지 않아야합니다. 편집시 수정 된 –

+0

while..else - 이상한 기능처럼 보입니다. –

+0

거의 사용하지 않지만 감시 카메라를 만들지 않아도됩니다. 그냥 밖으로 나간다. –

4

, 당신은 실제로 count + 1에 동일한 count 설정되지 않습니다 - 그냥 변수에 할당하지 않는 count + 1, 진술됩니다

In [1]: count = 1 

In [2]: count + 1 
Out[2]: 2 

In [3]: count 
Out[3]: 1 

당신은 count += 1 같은 것을 사용할 것 . 또한, 함께 문제를해야 할 것 : 그것은 처음에 0이 될 것이기 때문에, 당신이 상관없이 무엇 카운트 0으로 각각의 시간을 재설정하는

sum = count * sum 

. 그것이 여전히 당신을 위해 작동한다면 당신은 1로 그것을 시도해 볼 수 있습니다, 그러나 당신이하고자하는 것을 통해 생각할 필요가 있습니다. while을 사용하는 else 문이 사용되지만 여기서는 while 조건이 충족 된 후 블록을 종료하고 그 방법으로 변수를 반환 할 수 있습니다.

+1

이상한, 자습서에서 + = 연산자를 아직 보지 못했습니다. –

+0

@Jordan 확실히 유용합니다 :) – RocketDonkey

+0

과제는 파이썬에서 연산자가 아닙니다. 그냥 말해. –

1

그래서 나는 당신이 파이썬 구조로 작업하기 위해 따르고 있지만 다른 것을 호출 할 수는 없다. else 문을 테스트 할 판단력이 없으므로 결코 돌아 오지 않을 것입니다. 작동하려면 if 문에 연결해야합니다.

는 예를 들어, 당신은 같은 것을하고 싶은 것 : 나는 또한 확실히 모르는

if x == 1: 
    return blah 
else: 
    return foo 

을하지만 코드는 아예 실행되지 않을 수 있습니다. 나는 어떤 디스플레이인지 모르지만 나는 당신이 원하는 것이 아니라고 확신한다.

이 읽어 보시기 바랍니다 : 당신이 당신의 루프 당신이 원하는 일을 할 수 있도록 http://docs.python.org/2/tutorial/controlflow.html

이 당신이 제어 구조에 대해 배울 도움이 될 것입니다.여기

+1

http://docs.python.org/2.7/reference/compound_stmts.html –

+1

나는이 안내서에서 싫어하기 때문에이 안내서를 싫어합니다.이 예제에서는 더 분명해 보입니다. –

관련 문제