2011-12-06 2 views
2

저는 파이썬에 초보입니다! 내 공부를 마쳤으며, 여러 권의 책을 읽었으며 지금은 어린 시절의 어려움을 시도했습니다. 변수 및 데이터 유형을 성공적으로 완료했지만 주제 2 (기능)의 질문 7이 나에게 지옥을주고 있습니다.pyschools : 사이트에서 잘못된 답변을 받았습니까? (주제 2, 질문 7)

저는 Eclipse를 Python (버전 3.2)과 함께 사용하고 있습니다. 내 식에서는 100, 51, 525의 답을 얻습니다. 그 대답은 피실험자가 기대하는 대답과 같지만 함수가 100, 0 및 500을 반환한다는 것을 보여줍니다.

여기에 질문이 있습니다 !) :
두 개의 숫자를 인수로 취하고 백분율 값을 정수로 반환하는 percent (value, total) 함수를 작성하십시오.
그리고 아래는

def percent (value, total): 
     a = value 
     b = total 
     return(int((a/b) * 100)) 
    percent(70, 70) 
    percent(46, 90) 
    percent(63, 12) 

이 사람이 정말하고 싶은 어디서 잘못 가고 pyschools 무엇을 말해 줄 수 내 기능입니다?

감사합니다.

답변

9

당신은 파이썬 3.x를 사용하고 있으며 파이썬 2.x를 사용하고 있습니다. Python 2.x에서 인수가 정수인 경우 / 연산은 항상 정수 나누기입니다. 1/20입니다. 따라서 float()을 사용하여 인수 중 하나를 부동 소수점 숫자 (예 : int((float(a)/b) * 100))로 변경하십시오. 그러면 a/b에는 분수 부분이 있습니다.

또는 그들이 파이썬 2.x에서의 최신 버전을 사용하는 가정, 당신은 단지 스크립트의 시작 부분에이를 추가 할 수 있으며 사이트에 작동합니다 : 제쳐두고, 왜으로

from __future__ import division 

입력 매개 변수를 변수에 할당하고 있습니까? 그들은 이미 변수입니다. 이 같은

def percent(a, b): 
    return int((float(a)/b) * 100) 
+0

감사합니다. 이것은 작동했습니다 : return int ((float (a)/b) * 100) – lukik

0

파이썬은 소수 부분을 잘라내어 정수로 수학 연산을 수행합니다.

이를 피하려면 입력 값 중 하나에 나누기 전에 1.0을 곱하십시오.

+0

미세 내가 입력을 보여주기 위해 편집 작동

def percent(number, total): return int((float(number)/total) * 100) 

을 떠 하나 개의 값을 변환합니다. 감사. – lukik

+0

주의 사항은 Python 2.x의 기본 동작에만 적용됩니다. 나누기 전에 분자에 100.0을 곱하면 더 좋은 방법입니다. –

0

당신은 절단 격차를 사용할 수 있습니다 : 당신이 그 (것)들을 ab 이름하려는 경우, 그냥 그런 식으로받을

def percent(value, total): 
    return value * 100 // total 

장점 :

(0)와 함께 작동 2.2에서 모든 파이톤 스.

(1) 판독기는 실행중인 Python 버전을 추측하지 않고도 from __future__ 마술 용 모듈의 시작을 검사하지 않고도 한 행이 무엇을하는지 알 수 있습니다.

(2) 잠재적 인 부동 소수점 문제를 피하십시오.

(3) floatint을 사용하지 않도록합니다. 즉, 두 가지 (비교적 비싼) 함수 호출을 절약 할 수 있습니다.

주의 : //float 개체와 int 개체에서 작동합니다.질문은 args가 "숫자"(float 개체를 포함 할 수 있음)이고 결과는 "정수"(반드시 int 개체 일 필요는 없음) 여야한다고합니다. 그것은 상당한 면허를줍니다. 그들은 반환 값이 int 객체 인 주장하면

>>> percent(63.001, 11.9999) 
525.0 # That's an integer 

는 다음 물론 당신은 int()가 필요합니다.

1

당신이이어야 할 필요가 파이썬 2.x를 사용하고 있기 때문에 이것이

관련 문제