2017-03-25 7 views
0

"제곱근"루프 생각 :파이썬 2 판 연습 7-1

while True: 
    y = (x+ a/x)/2 
    if y == x: 
     return x 
    x = y 

복사 "광장 뿌리"에서 루프를 매개 변수로 을받는 함수라고 mysqrt에 캡슐화는, 선택 합리적인 값이 x이고 의 제곱근 추정값을으로 반환합니다. 이를 테스트하려면 ,이 같은 테이블에 인쇄하는 기능 이름 test_square_root 쓰기 : 여기

a mysqrt(a)  math.sqrt(a) diff 
- ---------  ------------ ---- 
1.0 1.0   1.0   0.0 
2.0 1.41421356237 1.41421356237 2.22044604925e-16 
3.0 1.73205080757 1.73205080757 0.0 
4.0 2.0   2.0   0.0 
5.0 2.2360679775 2.2360679775 0.0 
6.0 2.44948974278 2.44948974278 0.0 
7.0 2.64575131106 2.64575131106 0.0 
8.0 2.82842712475 2.82842712475 4.4408920985e-16 
9.0 3.0   3.0   0.0 

것은 내가 쓴 내용은 다음과 같습니다

여기
import math 

def mysqrt(a): 
    x = a/5 
    while True: 
     y = (x+ a/x)/2 
     if y == x: 
      return x 
     x = y 

def test_square_root(): 
    a = 1.0 
    print('a', repr(mysqrt(a)).rjust(6), repr(math.sqrt(a)).rjust(12), 'diff'.rjust(10)) 
    print("-  ---------   ------------   ----") 
    while a < 10.0: 
     print(a, " ", mysqrt(a), " ", math.sqrt(a), " ", abs(mysqrt(a)-math.sqrt(a))) 
     a += 1 

test_square_root() 

내가 무엇을 가지고 : 당신으로

a 1.0   1.0  diff 
-  ---------   ------------   ---- 
1.0 1.0 1.0 0.0 
2.0 1.414213562373095 1.4142135623730951 2.220446049250313e-16 
3.0 1.7320508075688772 1.7320508075688772 0.0 
4.0 2.0 2.0 0.0 
5.0 2.23606797749979 2.23606797749979 0.0 
6.0 2.449489742783178 2.449489742783178 0.0 
7.0 2.6457513110645907 2.6457513110645907 0.0 
8.0 2.82842712474619 2.8284271247461903 4.440892098500626e-16 
9.0 3.0 3.0 0.0 

어레이가 깔끔하게 정렬되어 있지 않습니다. 요소의 길이가 같지 않은 경우 어떻게 배열을 인쇄 할 수 있습니까? 고맙습니다!

+0

while 루프에서 출력 문자열의 서식을 지정해야합니다. '.format()'과 [형식 지정자] (https://pyformat.info/)를 살펴보십시오. 그런 다음 고정 된 수의 열이있는 열을 만들 수 있습니다. – pylang

답변

0

{0 : .8f} {0 : .10f} 및 {0 : .4f} 또는 원하는 coloumn 너비를 사용하여 각 요소를 고정 소수 자릿수로 인쇄하도록 print 문을 조정하십시오.