質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

2448閲覧

Python小数のfor文

gymgym

総合スコア97

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/05/17 07:16

for文を小数を用いて実行したいと考えています

Python

1for z in range(1, 0.001, -0.01): 2 print(i)

個人的に調べて

Python

1def drange(begin, end, step): 2 n = begin 3 while n+step < end: 4 yield n 5 n += step 6 7x = drange(1, 0.001, -0.01) 8print(x)

以上のようなジェネレータを使ってみたのですが、

<generator object drange at 0x101dd19e8>

以上のようなことをゆわれました。

どのような改善が必要でしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ジェネレータ関数からはジェネレータイテレータが返されます。
リストに直したい場合はlist関数に放り込んでください。

Python

1>>> def gen(): 2... yield 1 3... yield 2 4... yield 3 5... 6>>> g = gen() 7>>> g 8<generator object gen at 0x0000024D62425A40> 9>>> 10>>> list(g) 11[1, 2, 3]

投稿2018/05/17 07:20

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gymgym

2018/05/17 07:24

すぐに回答していただきありがとうございます。 とても助かりました。
guest

0

すでに解決されていますが、減少数列が生成されないようだったので修正を加えてみました。

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 09:55

can110

総合スコア38260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問