2017-12-25 53 views
-2

다음 코드가 작동하지 않는 이유에 대해 혼란스러워합니다. 내 혼란은 반환과 지문에 달려있다. 목록을 논증으로 삼는 방법을 모르겠습니다. 그 밖의 모든 것은 그 부분까지 잘 작동하는 것처럼 보입니다.파이썬 2.7에서 인수로 목록 표시

def while_mean(l): 
    sum = 0 
    length = float(len(l)) 
    index = 0 
    while index < len(l): 
    sum = l[index] + sum 
    index = index + 1 
    return sum/length 

def for_mean(l): 
    sum = 0 
    length = float(len(l)) 
    for i in l: 
    sum = i + sum 
    mean = sum/length 
    return mean 

def stats(): 
    apd = ([]) 
    nume = input("write a number:") 
    while nume != 'n': 
    apd.append(nume) 
    print apd 
    nume = input("write another number:") 
    return sum(apd) 
    return while_mean([apd]) 

print stats() 
print while_mean([apd]) 

변경된 데프 통계에 :

def stats(): 
    apd = ([]) 
    nume = raw_input("write a number:") 

    while nume != 'n': 
    apd.append(float(nume)) 
    print apd 
    nume = raw_input("write another number:") 

    return sum(apd) 

print apd = ([]) 
print stats() 
print while_mean(apd) 
+0

구체적으로 도움이 필요한 것이 있습니까? "목록을 논증으로"만드는 것은 도움이 필요합니까? – Carcigenicate

+1

'l'을 식별자로 사용하는 것은 나쁜 습관입니다. 조만간 어려운 디버깅 문제로 스스로를 설정하고있는 '1'과 매우 흡사합니다. 또한,'[apd]'는 숫자 목록이 아닌 목록의 목록이라는 것에주의하십시오. 왜'apd' (이미 목록입니다)를 목록에 넣고 있습니까? –

+0

코드를 수정했는데 -1 대신 'n'을 사용해야하는 이유는 교사가 그렇게 말했기 때문입니다. 내 특정 문제는 여기에 내 목록을 apd 내 variable_mean() 호출에 대한 내 인수에 넣어하려고 할 때 변수로 볼 수 없습니다. 그리고 논점으로 목록을 사용하는 것이 문제인지 아닌지 알지 못했기 때문에 '논점으로 목록'이라고 말했습니다. –

답변

2

당신은 두 번 반환 할 수 있도록 단지이 두 가지의 첫 번째

apd

return sum(apd) 
return while_mean([apd]) 
stats 내부에 정의되어 실행됩니다 함수이므로 외부에서 사용하려면 함수를 실행하기 전에 함수를 정의하거나 반환. 당신이 목록으로 apd을하려는 경우 또한

, 다음 while_mean([apd])처럼 호출하지 않는 것이 아니라

while_mean(apd) 

그렇지 않으면 목록의 목록을 만들 수 있습니다.

1
def while_mean(l): 
    sum = 0 
    length = float(len(l)) 
    index = 0 
    while index < len(l): 
     sum = l[index] + sum 
     index = index + 1 
    return sum/length 

def for_mean(l): 
    sum = 0 
    length = float(len(l)) 
    for i in l: 
     sum = i + sum 
     mean = sum/length 
    return mean 

def stats(): 
    nume = input("write a number:") 
    while nume != -1: 
     apd.append(nume) 
     print apd 
     nume = input("write another number:") 
    return sum(apd) 
    return while_mean([apd]) 

apd = ([]) 
print stats() 
print while_mean(apd) 
코드, 당신은 stats 기능의 내부 apd 변수를 선언 한 한 방법으로

하지만, 함수 밖에서는 그 변수를 선언 한 다음 매개 변수로 함수에 전달할하는 것이 좋습니다 , 현재 목록은 함수 밖에서 유지됩니다.
apd 변수를 while_mean 함수에 전달할 수도 있습니다.

또 다른 것은, -1nume의 값을 비교하는 것이 좋습니다의 stats() 기능에 (또는 다른 숫자는 당신이 원하는) while 루프의 조건 문자에 반대.
정수를 입력하면 이 integer으로 지정 되었기 때문입니다. 따라서 nume은 유형이 integer이고 nume이 유형이 integer이기 때문에 문자를 입력 할 수 없으며 변수 nume에 문자를 할당 할 수 없습니다.

목록에 입력 할 숫자를 입력하면 -1을 입력합니다.

나는 귀하의 코드를 수정했으며, 내가 작성한 개정은 위에 있습니다. 이게 도움이 되길 바란다.

+0

하지만 그 후 특정 apd (함수 뒤에 정의 됨)의 길이가 0이므로 0으로 나눕니다. 작동하지 않습니다. –