2014-07-18 4 views
-1

원하는 단계 수의 정규화 된 변수 값을 제공하는 Python 함수를 작성하려고합니다. 값을 반올림하고 1에 도달하는 데 문제가 있습니다. 이후 계산에서이 값이 필요할 것이므로 소수점 이하의 특정 숫자로 인쇄하려면 충분하지 않습니다. 대신 파이썬을 사용하여 0,0.00001,0.00002와 같은 계산을하고 최대 1 ...정규화 된 변수의 반올림 값

여기 코드가 있습니다 .... 어떤 아이디어? for 루프를 사용하고 싶지 않다는 것을 잊어 버렸습니다. ...

그냥 재귀 함수를 사용하여 나중에 0에서 1 사이의 값을 가져 와서 나중에 베르 스틴에서 사용합니다. 폴리곤을 사용하여 베 지어 곡선/표면을 계산합니다. itertools에서

from itertools import count 
import sys 

def b(u): 

    if u>=0 and u<=1: 
     u=count(0.0,0.001) 
     u=u.next 
     u=round(u.next(),4) 

     print(u) 

     b(u) 
    else: 
     sys.exit(0) 

b(0) 
+1

들여 쓰기를 수정할 수 있습니까? 왜 당신은 그 자체 안에 b (u)를 부르는거야? – user2963623

+1

정확히 1을 치는 것을 불가능하게하는 범위와 수의 단계가 항상 있습니다. 그 경우에 당신이 갖고 싶은 것을 더 정확하게 지정해야합니다. – Achim

+0

@user 2963623 들여 쓰기가 이제 괜찮다고 생각합니다. for 루프와 같은 용도로이 함수를 사용하고 싶습니다.이 점을 이해할 때 베 지어 커브를 그리는 코드에서이를 구현하고 싶습니다. (이와 관련된 질문이 있으면 if 당신이 좋아하는 것) –

답변

0

사용 count :

>>> from itertools import count 
>>> c = count(0.0, 0.0001) 
>>> c.next() 
0.0 
>>> c.next() 
0.0001 
>>> c.next() 
0.0002 

count 무한 반복자입니다. 따라서, 계속하시는 한 .next()은 다음 번호를 계속 제공 할 것입니다.

>>> c = count(0.0, 0.0001) 
>>> ... (many .count() calls later) 
>>> c.next() 
0.9998999999999062 
>>> c.next() 
0.9999999999999062 
>>> c.next() 
1.0000999999999063 

그래서 당신이해야합니다 어느 쪽이든 결정하기 위해 무엇을 정밀 당신에게 :

인해 부동 번호, 당신은 결국 .next() 몇 백 통화 후이 도달 할 수 있습니다 저장되어있는 재미있는 방법으로, 명심하십시오 당신의 계산에 정말로 필요합니다. 예를 들어 정밀도의 소수 자릿수가 4 자릿수 인 경우 :

>>> round(c.next(), 4) 
0.0999 
>>> round(c.next(), 4) 
0.1 
>>> round(c.next(), 4) 
0.1001 
>>> round(c.next(), 4) 
0.1002 
>>> round(c.next(), 4) 
0.1003 

반복기를 사용하면 더 이상 다른 함수가 필요하지 않습니다. 전화 번호 범위를 알아야하는 횟수만큼 전화하십시오 :

>>> from itertools import count 
>>> numbers = [] 
>>> c = count(0.0, 0.0001) 
>>> how_many = 10 
>>> while len(numbers) != how_many: 
... numbers.append(round(next(c), 4)) 
... 
>>> numbers 
[0.0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007, 0.0008, 0.0009] 
+0

이것은 내 코드로 시도한 것과 다른 점이지만, 아프지 만 이것을 시도해도 .... 답변 해 주셔서 감사합니다.하지만 내 코드의 정신으로 문제를 해결할 방법을 생각할 수 있습니까? –

+0

나는 그것을 시도하고 속성 오류 'ittertools.count 개체'속성을 '다음' '내가 잘못 이해하고있다? 파이썬 3.3.4를 사용하는 Im –

+0

파이썬 3.4를 사용한다면'next (c)'를 할 수있다 –