すでに解決されていますが、減少数列が生成されないようだったので修正を加えてみました。
Python
1def drange(begin, end, step):
2 n = begin
3 cnt = 0
4 while True:
5 if begin <= end: # 増加
6
7 if step <= 0:# ステップ値が不正
8 break
9
10 if n >= end:
11 break
12 else: # 減少
13
14 if step >= 0:# ステップ値が不正
15 break
16
17 if n <= end:
18 break
19
20 cnt += 1
21 yield n
22 n = begin + cnt * step # 加算による累積誤差を抑制
23
24print(list(drange(0,1, 0.2))) # [0, 0.2, 0.4, 0.6000000000000001, 0.8]
25print(list(drange(1,0,-0.2))) # [1, 0.8, 0.6, 0.3999999999999999, 0.19999999999999996]
26print(list(drange(0,1,-0.2))) # ステップ値が不正 []
27print(list(drange(1,0, 0.2))) # ステップ値が不正 []
28print(list(drange(1, 0.001, -0.01))[-1]) # 末尾。0.010000000000000009
なお、過去python numpyにおけるarange関数のエラーにて回答したのですが、numpy.linspaceを使うのが簡便、確実かと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/17 07:24